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")就可以了

你可能感兴趣的:(Android 8.0 第三方so库链接出错解决方法)