android public 库引起的dlopen 错误

以前在Android5.0上直接这样调用是没问题.

s_handle = dlopen("/system/lib/libHWMI.so", RTLD_NOW);

但是项目移植到Android 8.0上就报了如上错误.

说下解决方法,想知道原理的移步:http://jackwish.net/namespace-based-dynamic-linking.html

想看代码的话Android8.0是在: system/core/libnativeloader

其实错误log里面已经提示了,不过会有其它问题.

permitted_paths="/data:/mnt/expand:/data/data/org.ftd.gyn"

放在如上路径下面,虽然dlopen过了,但是报了其他的错误,如"libcutils.so" not found.

/data:/mnt/expand

如上所指的路径在文件system/core/libnativeloader/native_loader.cpp里面,在它的上面一行我们看到了

static constexpr const char* kPublicNativeLibrariesSystemConfigPathFromRoot =
        "/etc/public.libraries.txt";
static constexpr const char* kPublicNativeLibrariesVendorConfig =
        "/vendor/etc/public.libraries.txt";

系统的public native lib path: /system/etc/public.libraries.txt,

厂商的public native lib path: /vendor/etc/public.libraries.txt, 这个文件可能不存在, 没有的可以新建, 然后预置到vendor/etc/下面

因为我操作的是camera和vendor相关,所以在/vendor/etc/public.libraries.txt里面加入我的libHWMI.so, 然后就不报错了。
————————————————
版权声明:本文为CSDN博主「ngyzqf」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ngyzqf/article/details/78991929

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值