在Android 31平台,尝试使用第三方应用调用系统SO 库,会报如下的错误
Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib64/XXX.so" needed or dlopened by "/apex/com.android.art/lib64/libnativeloader.so" is not accessible for the namespace "classloader-namespace"
大体原因是,Android N 开始限制 第三方 应用使用非公开的 系统库
临时解决debug 方法:
将你要用的到 XXX.so 加入到 /system/etc/public.libraries.txt
1. adb remount
2: adb pull /system/etc/public.libraries.txt [你要保存的目录]
3:将你要用的到 XXX.so 加入到 /system/etc/public.libraries.txt
4. adb push [public.libraries.txt 所在的路径] /system/etc/
5. adb reboot
参考:
Android 7.0调用第三方库出现加载失败的问题 - 极客分享文章来源:https://www.toymoban.com/news/detail-653273.html
第三方app加载系统/system/lib下的库--is not accessible for the namespace - 代码先锋网https://www.codeleading.com/article/67782154448/文章来源地址https://www.toymoban.com/news/detail-653273.html
到了这里,关于第三方应用调用系统SO 库失败Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!