Android APK安装后.so存在却触发UnsatisfiedLinkError问题求助
关于Android JNI开发中.so文件加载失败的问题
问题背景
已为此问题困扰许久,虽发现不少类似案例,但解决方案均不适用,可能我对APK安装后.so文件的存放位置存在误解。
开发环境
- Android平台
- 使用
build.gradle与CMakeLists.txt进行JNI开发以运行C++代码,遵循官方教程及其他网站资料
问题现象
- C++代码可正常返回数值,生成的APK解压后
lib目录下有对应各架构(含目标ARM架构)的.so文件 - 安装APK后运行C++代码时,触发
UnsatisfiedLinkError,提示在/system/lib和/vendor/lib的nativeDirs中未找到.so文件 - 将APK解压出的
.so文件手动推送到上述目录,程序即可正常运行,说明代码编译无误 - 我了解到
.so文件可能不再从APK提取,但系统中完全找不到该文件,而APK内确实存在
相关代码
CMakeLists.txt
cmake_minimum_required(VERSION 3.4.1) add_library(native SHARED nativeCode.cpp) target_link_libraries(native android log)
Java加载库代码
static { System.loadLibrary("native"); }
疑问
- APK安装后,.so文件在设备中的正确存放位置是哪里?
- 是否需要在CMakeLists.txt中指定.so文件的存放位置?
- 若需指定应用查找.so文件的路径,应设置在何处?
内容的提问来源于stack exchange,提问作者N00bProgrammer
相关产品推荐
相关产品推荐

