在 Android 开发中,.so 文件(即共享对象文件)是使用 C/C++ 编写的本地库(Native Library),通常用于性能敏感或复用已有 C/C++ 代码的场景。正确放置这些文件对应用能否正常运行至关重要。
标准存放路径
在 Android 项目中,.so 文件应放在以下目录之一:
- src/main/jniLibs/(推荐):这是 Gradle 构建系统默认识别的 native 库目录。
- libs/(旧项目):在早期 Eclipse 项目中常用,但现代 Android Studio 项目建议使用
jniLibs。
按 CPU 架构分类
.so 文件必须根据目标设备的 CPU 架构分别存放于子文件夹中,例如:
src/main/jniLibs/armeabi-v7a/src/main/jniLibs/arm64-v8a/src/main/jniLibs/x86/src/main/jniLibs/x86_64/
每个文件夹内只包含对应架构的 .so 文件。构建 APK 时,Gradle 会自动将这些库打包进 lib/ 目录。
注意事项
- 不要将不同架构的
.so混放。 - 若缺少某架构的库,该架构设备可能无法加载或崩溃。
- 可通过
android:extractNativeLibs="true"控制是否解压 native 库(默认 true)。
正确组织 .so 文件可避免“UnsatisfiedLinkError”等常见错误,确保 App 在各类设备上稳定运行。