Android 关于arm64-v8a、armeabi-v7a、armeabi、x86、x86_64下的so文件兼容问题

本文分析了华为Mate8手机在Android6.0系统下出现闪退的原因,指出是由于arm64-v8a文件夹缺少必要的so库文件导致。通过删除arm64-v8a文件夹或补充缺失的so库文件可以解决问题,但推荐获取完整的对应文件夹so库文件以确保最佳兼容性。
摘要由CSDN通过智能技术生成

今天测试人员给出了一个bug:华为 Mate 8手机Android 6.0系统运行时,出现闪退的bug!开始以为是系统版本引起的问题,经测试小米4的Android 6.0系统不会复现该bug。经过一番排查,发现是arm64-v8a文件夹缺失对应的so库文件引起的BUG。现在许多三方的SDK都会提供编译好的so库文件,但是由于一些原因,有些SDK并没有提供对应标题所有目录的so库文件,而有的却提供的全面,比如百度的SDK就提供有标题列出的所有目录对应的so库文件。

如果你有两个文件夹armeabi和arm64-v8a,在armeabi里面有a.so 和 b.so,而在arm64-v8a里面只有a.so,那么arm64-v8a的手机在用到b的时候就会因为找不到b而报错了。由于arm64-v8a是向下兼容的,所以只需要删掉arm64-v8a文件夹,让手机自适应去查找armeabi的so库即可。但是这样并不能完全的做到完美的兼容,因此在使用JNI库的时候最好是拿到对应文件夹的so库文件。

之前在网上查找解决方法:将arm64中将arm64-v8a缺失的so拷贝至arm64-v8a中。经测试,该解决方法只适用某些so文件,并不能解决该问题,所以请猿类在解决的时候做好验证!!!

参考及姿势补给:
链接:http://www.zhihu.com/question/36893314/answer/78467097
链接:http://www.jianshu.com/p/cb05698a1968
链接:http://www.voidcn.com/blog/u013278099/article/p-4944290.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值