报错信息:
java.lang.UnstatisfiedLinkError…/system/lib64 couldn’t find “xxxx.so”
对报错问题的分析:
我这边导入的第三方aar 中查看发现对应的so文件是集成在armeabi-v7a 这个目录下,但是我的设备是64位,默认从arm64-v8a 这个目录下开始读取,如果不存在arm64-v8a这个目录,才会往下查询。
定位问题:
- 确认自己编译出来的app是否存在对应的文件夹
-> 从自己的项目路径中找到对应的apk(test.apk)
-> 然后copy对应的apk(test2,apk)
-> 修改test2.apk后缀名为zip(test2.zip)
-> 解压test2.zip 到test2文件
-> 打开test2/libs
-> 里面就有对应的文件夹,可以查看报错中提到的arm64-v8a 是否存在对应的so文件
解决办法:
2. 找到对应的供应商,要求他们提供 把so文件放到 arm64-v8a 目录下的aar
3. 在安卓studio中规避其他的so(换句话说就是吧arm64-v8a这个路径下的所有资源都一一规避)
defaultConfig {
//此处省略上面的自己项目配置信息
packagingOptions {
//把arm64-v8下所有的so库文件屏蔽,具体要写几条看libs下面该文件夹下有几个文件
exclude 'lib/arm64-v8a/xxx.so'
//把armeabi下所有的so库文件屏蔽,具体要写几条看libs下面该文件夹下有几个文件
exclude 'lib/armeabi/xxx.so'
//把x86下所有的so库文件屏蔽,具体要写几条看libs下面该文件夹下有几个文件
exclude 'lib/x86/xxx.so'
//把x86_64下所有的so库文件屏蔽,具体要写几条看libs下面该文件夹下有几个文件
exclude 'lib/x86_64/xxx.so'
}
}
这样子就好了,
想要确认最后是否成功规避其他so库了,可以重新查看apk里面的libs,下面是否只有armeabi-v7a这个目录了,如果是即成功