今天给同事装自己的app时候出现个问题,说找不到xxxx.so,在我手机上是可以的。看错误报告发现,是在arm64-v8a里没有发现,突然想起来自己的.so是32位的,所以当安装时候会检测不到.so,查了资料发现,
android 在生成apk会包含7种abi包(armeabi,armeabi-v7a,x86,mips,arm64-v8a,mips64,x86_64),android系统在安装APK的时候,不会安装APK里面全部的SO库文件,而是会根据当前CPU类型支持的ABI,从APK里面拷贝最合适的SO库,并保存在APP的内部存储路径的 libs 下面。
所以如果想用32位的兼容64位的so包,需要在android studio上这样配置,去掉64位的包。
defaultConfig { ndk { abiFilters "armeabi", "armeabi-v7a", "x86", "mips" } }