Android 8.0 第三方so库链接出错解决方法

Android 8.0 第三方so库链接出错解决方法

展开
Android 8.0 第三方so库链接出错解决方法
项目在从Android 6.0迁移到8.0的手机上时,突然报错
java.lang.UnsatisfiedLinkError: dlopen failed: library "***.so" not found
查了各种资料以后,发现由于Google对文件访问的安全性的提高所导致。
解决方法主要有以下几种:
1、降低targetSdkVersion
2、将私有so包,加入到手机的system/ect/下的public.libraries.txt的白名单中
3、到手机的system/lib(lib64)下,把需要so包pull出来,拷贝到项目lib中,然后System.loadLibrary()

第一种方法:
现在的targetSdkVersion为28,降低到Android 6.0对应的23之后,运行时又报了一个错,稍微查了下资料,发现又一个坑,加上时间不够,暂时没记录,等有空的时候看看是否可以解决

第二种方法:
需要手机的root权限,才可以对system/etc下的public.libraries.txt文件进行编辑,然而Android 8.0的手机,root需要recovery模式,或者使用工程机,呃死路一条

第三种方法:
验证可行,但需要注意so包是32位还是64位的
目前项目使用的第三方私有so包是32位的,就需要到system/lib下去pull
如果是64位的,需要到system/lib64的目录下去pull

pull之前 用下面的命令find -name libssl.so先查一下
然后adb pull system/lib/libssl.so D:\tmp\
然后保存到项目的libs下面,使用的时候System.loadLibrary("ssl")就可以了
————————————————
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值