Android 8.0 dlopen failed 问题
2018-01-06 22:01
337 查看
先看下错误:
以前在Android5.0上直接这样调用是没问题.
但是项目移植到Android 8.0上就报了如上错误.
说下解决方法,想知道原理的移步:http://jackwish.net/namespace-based-dynamic-linking.html
想看代码的话Android8.0是在: system/core/libnativeloader
其实错误log里面已经提示了,不过会有其它问题.
放在如上路径下面,虽然dlopen过了,但是报了其他的错误,如"libcutils.so" not found.
如上所指的路径在文件system/core/libnativeloader/native_loader.cpp里面,在它的上面一行我们看到了
系统的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, 然后就不报错了。
每个人碰到的问题都不一样,还是希望能帮到和我问题一样的人。
01-06 22:09:03.069 5075 5075 E linker : library "/system/lib/libHWMI.so" ("/system/lib/libHWMI.so") needed or dlopened by "/data/app/org.ftd.gyn-jbIJZ4TolpZgZ5Ahy1loOg==/lib/arm/libnative-lib.so" is not accessible for the namespace: [name="classloader-namespace", ld_library_paths="", default_library_paths="/data/app/org.ftd.gyn-jbIJZ4TolpZgZ5Ahy1loOg==/lib/arm:/data/app/org.ftd.gyn-jbIJZ4TolpZgZ5Ahy1loOg==/base.apk!/lib/armeabi-v7a", permitted_paths="/data:/mnt/expand:/data/data/org.ftd.gyn"]
以前在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, 内容如下:
libandroid.so libaaudio.so libc.so libcamera2ndk.so libdl.so libEGL.so libGLESv1_CM.so libGLESv2.so libGLESv3.so libicui18n.so libicuuc.so libjnigraphics.so liblog.so libmediandk.so libm.so libnativewindow.so libOpenMAXAL.so libOpenSLES.so libRS.so libstdc++.so libsync.so libvulkan.so libwebviewchromium_plat_support.so libz.so
厂商的public native lib path: /vendor/etc/public.libraries.txt, 这个文件可能不存在, 没有的可以新建, 然后预置到vendor/etc/下面
因为我操作的是camera和vendor相关,所以在/vendor/etc/public.libraries.txt里面加入我的libHWMI.so, 然后就不报错了。
每个人碰到的问题都不一样,还是希望能帮到和我问题一样的人。
相关文章推荐
- 解决android Failed to rename directory 问题
- android 编译 failed(camera问题) -01
- Android SDK到3.0版本时,遇到Failed to rename directory E:/android/tools to E:/android/temp/ToolPackage.old01问题
- android解决Send Jdwp failed!问题
- Android 中 Installation error: INSTALL_FAILED_DEXOPT 的一些问题
- Android问题集锦之六:Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE 错误的解决与模拟器内存的设置与查看
- [转] Android keymap file open failed 问题
- Android问题集锦转载之六:混淆时报错:Conversion to Dalvik format failed with error 1的解决办法
- [Android] "Failed to find Java version for 'C:\Windows\system32\java.exe"问题的解决方法
- Android环境搭建问题的解决:Failed to fetch URL http://dl-ssl.google.com/android/repository/addons_list-1.xml,
- android 4.0版本的模拟器启动不了,报Failed to allocate memory: 8的问题
- android 开发遇到的问题 :Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
- Android问题:Test run failed: Instrumentation run failed due to 'java.lang.RuntimeException'
- Failed to find provider info for com.android.calendar问题排除
- android 真机部署测试 "INSTALL_FAILED_MEDIA_UNAVAILABLE” 问题
- android中ADT版本问题: java.lang.NoClassDefFoundError和conversion to dalvik format failed with error 1错误
- android更新sdk 时Failed to rename directory 问题的解决
- Android使用Google map的地图服务的开发 INSTALL_FAILED_MISSING_SHARED_LIBRARY 问题
- Android问题集锦之二:关于模拟器 Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY的 错误问题
- [转]更新Android SDK到3.0版本时,遇到Failed to rename directory E:\android\tools to E:\android\temp\ToolPackage.old01问题