今天我在写新项目的时候,添加了一个library,结果library里面有个.so文件必须添加,所以我在library的build.gradle的文件里面添加了NDK的设置,还有sourceset的文件目录。
ndk { abiFilters 'armeabi' //, 'x86', ' 'x86_64', 'arm64-v8a'//如果你设备其它架构,默认不添加,否则会出错 }compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } sourceSets { main { jniLibs.srcDirs = ['src/main/jniLibs/'] } }
结果发现了,出现了.so文件找不到的问题,
Throwable = dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.poscash-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.poscash-1/lib/arm, /vendor/lib, /system/lib]]] couldn't find "libepos2.so"
08-18 17:27:22.519 11274-11274/? E/stackTraceInfo: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.poscash-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.poscash-1/lib/arm, /vendor/lib, /system/lib]]] couldn't find "libepos2.so"
后来,经过大神的指点,说:什么.so文件的引用必须放在app的build.gradle的文件下。结果我改完之后的话,发现确实有用。