详解Android及跨平台开发中.so动态库的正确存放位置与使用方法
.so 文件(Shared Object)是Linux和Android系统中的动态链接库文件,类似于Windows系统中的.dll文件。它通常由C/C++代码编译生成,用于提供高性能计算、调用底层系统功能或复用已有C/C++代码。
在Android项目中,so文件应放置在特定的目录结构下,以便构建工具(如Gradle)能够正确打包到APK中。
标准路径为:
app/src/main/jniLibs/
在此目录下,需按CPU架构创建子文件夹,常见架构包括:
armeabi-v7a:32位ARM处理器arm64-v8a:64位ARM处理器x86:32位Intel处理器(模拟器常用)x86_64:64位Intel处理器例如:
app/src/main/jniLibs/armeabi-v7a/libexample.so app/src/main/jniLibs/arm64-v8a/libexample.so
在较老的Android项目结构中,so文件可能存放在:
libs/armeabi-v7a/ libs/arm64-v8a/
但自Android Studio普及后,推荐使用jniLibs目录。
在标准Linux系统中,so文件通常存放在系统库目录,如:
/usr/lib/usr/local/lib/lib用户也可通过设置LD_LIBRARY_PATH环境变量指定自定义库路径。
UnsatisfiedLinkError。System.loadLibrary()调用的名称一致(去掉lib前缀和.so后缀)。