如何解决java.lang.UnsatisfiedLinkError:dlopen 失败:命名空间“classloader-namespace”
我正在处理一个 Android 项目,我需要添加一个 (.jar) 库 awesomework.jar
。
当我添加库并在我的 Android 设备上运行项目时,我收到以下错误。
java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib64/libDecodeApi.so" needed or dlopened by "/system/lib64/anotherlib.so" is not accessible for the namespace "classloader-namespace"
程序在我的 awesomework.jar
中的第 System.loadLibrary("DecodeApi");
行崩溃
我的设置:
- Android 操作系统版本:10
- minSdkVersion:18
- 目标SDK版本:18
我搜索的内容
-
Reading this answer,我尝试在
main.jniLibs.srcDirs = ['libs']
中设置build.gradle
。这不起作用,因为当我从 android 设备中取出libDecodeApi.so
时,错误再次出现,在.so
目录中搜索另一个/system/
文件,例如libc++.so
和许多其他文件。所以我知道从/system
目录中提取几乎所有必要的共享对象并不是解决方案。 -
我发现所有需要的库也在
/vendor
目录下。我不太确定,但由于我的targetSdkVersion
和我的 Android 操作系统版本,我的awesomework.jar
是否应该在/verdor
目录下搜索那些对我的 Android 操作系统有效(?)的共享对象? -
我可以在
awesomework.jar
之外做些什么并强制我的图书馆在/vendor
目录中搜索吗?我无权访问awesomework.jar
源文件。 -
如果我可以访问
awesomework.jar
源文件(现在搜索更学术级别),是否可以将完整路径添加到System.loadLibrary();
以强制它在 {{ 1}} 目录?类似的东西/vendor
。 I saw this answer 提供项目目录中的路径。
还有其他想法,如何解决这个问题并找到解决方案?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。