Android N加载系统私有库时出现is not accessible for the namespace错误和针对该错误的解决方法
2017-04-13 09:36
2516 查看
谷歌从Android N开始,除了那些在Android NDK提供的库之外,限制了应用对系统私有库的加载。既然是限制了,想通过以前的方法去加载库已经行不通了。所以目前的解决方法就是把应用需要加载的库和需要依赖的库从系统中pull出来,然后集成到自己的应用当中。本文是看了这篇文章才有的启发http://www.wtoutiao.com/p/2e2B7iw.html,并通过实践证实程序可以正确运行。本文以使用libOpenCL.so库为例进行说明。
这里先贴出如果在Android N 加载系统私有库提示的错误:
java.lang.UnsatisfiedLinkError: dlopen failed: library "libcutils.so"
("/system/lib/libcutils.so") needed or dlopened by "/system/lib/libnativeloader.so"
is not accessible for the namespace "classloader-namespace"
at java.lang.Runtime.loadLibrary0(Runtime.java:977)
at java.lang.System.loadLibrary(System.java:1602)
System.loadLibrary("OpenCL");Note:我只用libOpenCL.so,但为什么我的arm64_v8a目录下还有那么多其他的库呢?如果你试着导入之后运行就会知道,使用OpenCL还要依赖其他很多的库,所以,我一并从手机文件系统中导出这些需要依赖的库。
这里先贴出如果在Android N 加载系统私有库提示的错误:
java.lang.UnsatisfiedLinkError: dlopen failed: library "libcutils.so"
("/system/lib/libcutils.so") needed or dlopened by "/system/lib/libnativeloader.so"
is not accessible for the namespace "classloader-namespace"
at java.lang.Runtime.loadLibrary0(Runtime.java:977)
at java.lang.System.loadLibrary(System.java:1602)
1、先从手机系统文件中pull出相关库(以libOpenCL.so为例)
2、导入到libs目录下,并使用System.loadLibrary("OpenCL")加载:
System.loadLibrary("OpenCL");Note:我只用libOpenCL.so,但为什么我的arm64_v8a目录下还有那么多其他的库呢?如果你试着导入之后运行就会知道,使用OpenCL还要依赖其他很多的库,所以,我一并从手机文件系统中导出这些需要依赖的库。
3、使用dlopen 加载libOpenCL.so
我在另一篇文章中已经介绍了如何动态加载libOpenCL.so,大家可以移步到这里去学习:dlopen动态加载,这个链接的文章提供了一个demo,大家可以下载学习。这里顺便说明一下,在这个链接中介绍到,加载时要指定库的路径,那么针对这个情况,路径就直接这样子设定就可以了:dlopen("libOpenCL.so",RTLD_LAZY);
相关文章推荐
- 关于Android系统调试程序经常出现的错误解决方法(一)
- Android系统移植与调试之------->安装apk时出现错误Failure [INSTALL_FAILED_DEXOPT]问题解决的方法
- 读取xml文件出现错误的一个解决方法(android)
- 无法加载oracle in oradb10g_home2 odbc驱动程序的安装例程,因为存在系统错误代码998 解决方法
- 解决HP笔记本安装XP SP3后出现系统蓝屏0x0000007E错误的方法
- asp.net办公自动化系统开发实例导航的安装出现错误的解决方法
- android2.x的桌面项目程序在android4.0上运行后出现 java.lang.NoClassDefFoundError错误 解决方法
- 针对VC++中一种常出现的错误的几种解决方法
- 用VS2010自带的Library Package Manager安装EFCodeFirst出现“无法加载一个或多个请求的类型”错误的解决方法
- ubuntu 编译 Android 出现的若干错误及解决方法
- eclipse导入android项目后出现错误的解决方法
- ubuntu 编译 Android 出现的若干错误及解决方法
- 加载flash9.ocx出现错误的解决方法
- ubuntu 编译 Android 出现的若干错误及解决方法
- 跟后台打印程序系统服务通讯时出现错误解决方法
- android开发中出现Only the original thread that created a view hierarchy can touch its views.错误的解决方法
- 联想Linux系统转XP出现error 17错误的解决方法
- ubuntu 编译 Android 出现的若干错误及解决方法
- 在android中使用proguard混淆代码出现“Conversion to Dalvik format failed with error 1”错误的解决方法
- ubuntu 编译 Android 出现的若干错误及解决方法