在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
参考: