将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