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

公司同事在主板(自己的主板)上给我搞了个自定义的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

更改权限后的:

然后重启一下主板

我的问题就解决了

然而,另外一块板也出现同样的问题。这XXX,真尴尬啊。使用上面的方法也不行了。于是换另外的方法是将同事生成的.so文件名复制到/system/lib/public.libraries.txt里面。但是重启的时候查看:

adb shell

cd system/etc

cat public.libraries.txt

发现里面并没有我刚复制进去的.so文件,最终还是只能向同事反映。最后同事将他生成的.so文件写入编译之后,重新烧录程序。生成app,测试,没问题了。

这真的是够折腾的。。。继续努力

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tiwolf_li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值