Android 在不同架构中用到.so加载失败的问题研究与解决办法

在Android开发中难免会用到.so库,但是使用过程中总是会碰到各式各样的问题,

下面就对出现的问题进行总结一下。

 1、确实是.so库的原因造成加载失败,不能识别

原因:.so库有问题; 

解决办法:重新编译.so库。

 2、 出现在某一个架构下找不到对应的.so库,比如:"lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "libxxx.so"

  原因:arm64-v8a架构下没有对应的64位.so库,一般来说64位是向下兼容的,那为什么还是会出现这样的问题呢?原因是如果App自己存在arm64-v8a就不会向下去找对应的.so库了。

 解决办法:如果存在arm64-v8a文件夹就可以考虑编译一个对应架构的.so库,如果没有,可以将arm64-v8a文件夹删除,集体向下兼容32位架构,这样就能避免出现找不到.so库的错误。

 3、在子线程加载.so库,因为.so库加载的时候需要进行线程绑定,而且仅有一次,如果在子线程加载过一次,在该子线程结束之后,该.so库就无法再次被加载,所以一般建议在主线程中加载.so库。

 4、加载成功,但是调用失败

 原因:本地native方法JNI编写错误或是.so里面的接口本身有问题

 解决办法:log日志调试。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值