工程里引用了几个sdk,打包成功,运行的时候报错,提示so库找不到。
排查原因:自己的工程只有armeabi-v7a的so库,但引用的SDK中有arm64-v8a的库。
打包APK后,lib下会出现arm64-v8a和armeabi-v7a两个文件夹。当运行在arm64位处理器上时Android发现有arm64-v8a,就会直接加载这个文件夹的so库。但自己工程的代码只兼容了v7,也就是自己工程的so库只在armeabi-v7a文件夹下存在。所以就蹦了
解决方法,1、增加arm64位支持,加个arm64的so库,但底层不是自己开发的。
2、只打包制定类型的so库,在主工程module的build.gradle中增加
ndk {
abiFilter("armeabi-v7a")
}
让程序只打包指定类型的so库,问题解决。
------
打包多类型设置:
ndk {
abiFilter("armeabi-v7a")
abiFilter("arm64-v8a")
}