☰
Android 将so库从libs中移到jniLibs中,以避免java.lang.UnsatisfiedLinkError: dlopen failed: library
2026/11/3 18:45:30 网站建设 项目流程

将libs中的so库移到module/src/main/jniLibs中,这样so库依赖的其他系统中的库就能找到。

在CMakeLists.txt中重新定义lib路径

# 定义一个变量,表示libs根路径 set(my_lib_path ${CMAKE_SOURCE_DIR}/../jniLibs)

public.libraries.txt是 Android 系统文件,位于/etc/public.libraries.txt(部分版本在/system/etc/public.libraries.txt),属于系统链接器ld-android.so的配置文件。

作用

告诉 Android 动态链接器:哪些.so是公开系统库,允许第三方 APK(普通 App)直接dlopen()/System.loadLibrary()加载。 不在这个列表里的系统 so,第三方应用不能直接加载,会报:

java.lang.UnsatisfiedLinkError: dlopen failed: library "xxx.so" not found

⚠️ 只对普通 App 生效;系统 App、uid=1000、vendor 进程不受该文件限制。

文件格式示例

libandroid.so libEGL.so libGLESv2.so libOpenSLES.so # 注释以#开头 libmycustom.so

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询