问题1 厂家提供的so包类型不全,一般是如下三种
若还需要使用 arm64-v8a ,可以新建 arm64-v8a 文件夹,然后拷贝 armeabi so包到里面
问题2 找不到 so 包
java.lang.UnsatisfiedLinkErrorr:dalvik.system.PathClassLoader[DexPathList[[zipfile “/data/app/com.nf.health-1/base.apk”],nativeLibraryDirectories[/data/app/com.nf.health-1/lib/arm64, /data/app/com.nf.health-1/base.apk!/lib/arm64-v8a, /vendor/lib64, /system/lib64]]] couldn’t find “libdewlt2-jni.so”
1 查看对应 libs 文件夹是否存在,若存在检测里面的 so 包是否存在
2 在 app 的 build 文件中加入如下代码
sourceSets {
main {
jniLibs.srcDirs = ['libs'] //指定so文件的位置
}
}
3 去掉 app 的 build 文件中过多的 so 包类型
defaultConfig {
ndk {
// 设置支持的SO库架构,没有的不要设置
abiFilters 'armeabi' //, 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'
}
}
问题3 能加载 so 包 但是调用方法时崩溃
某一种崩溃日志如下
UnsatisfiedLinkErrorr: dlopen failed "/data/ **.so" is 32-bit instead of 64-bit