公司同事在主板(自己的主板)上给我搞了个自定义的so文件,用来调用。结果我去调用的时候,出现了调用不到的问题。问题如下
java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib/inteflyserialport.so" needed or dlopened by "/system/lib/libnativeloader.so" is not accessible for the namespace "classloader-namespace"
一开始我还觉得难道是app有问题,于是各种找问题。各种看代码,同事给我之后也不太管这个,只是觉得之前可以调用了,现在不行应该就是你的问题。没办法,只能用力撸了。带着这个问题,去网络上各种找答案,各种是错。捣鼓了大半天,终于找到答案了。在此记录下,以避免下次再碰壁
原因:当前主板使用的是Android7.0的源代码,生成之后的so库里面的权限都是644的。如下
而你需要调用的so文件如果是644权限,那么就会报上面的错误。一直显示错误。
我们需要的操作:
1.usb连接到Android主板
2.adb remount
adb shell
cd /system/lib 在lib里面找到你想改变权限的so文件。
chmod 744 libtiwolf.so 将其权限更改成744
更改权限后的:
然后重启一下主板
我的问题就解决了