调用系统so库,调用他人的so库(已内置主板的)出现的问题解决

时间:2024-03-19 16:25:47

公司同事在主板(自己的主板)上给我搞了个自定义的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库,调用他人的so库(已内置主板的)出现的问题解决

而你需要调用的so文件如果是644权限,那么就会报上面的错误。一直显示错误。

 

我们需要的操作:

1.usb连接到Android主板

2.adb remount

adb shell

cd /system/lib 在lib里面找到你想改变权限的so文件。

chmod 744 libtiwolf.so 将其权限更改成744

更改权限后的:

调用系统so库,调用他人的so库(已内置主板的)出现的问题解决

然后重启一下主板

我的问题就解决了