Android开发中so库文件的存放位置

Android开发中so库文件的存放位置

2017.08.10 23:07* 字数 288 阅读 1558评论 0喜欢 0

在自己编译so库文件,或者引用第三方的so库文件时,库文件存放目录不正确经常会引起很多问题。这里总结一下。

so文件存放目录 或 默认生成目录:

  • jniLibs/CPU_ABI:对于Android Studio项目
  • libs/CPU_ABI:对于Eclipse项目
  • jni/CPU_ABI:在AAR文件中
  • lib/CPU_ABI:在APK文件中
  • 在app的nativeLibraryPath目录中:对于Android 版本<5.0 的设备
  • 在app的legacyNativeLibraryDir/CPU_ARCH目录中:对于Android版本>=5.0的设备

以上提到的CPU_ABI的可能取值如下,它的值取决于你编译的目标平台。

  • armeabi
  • armeabi-v7a
  • arm64-v8a
  • x86
  • x86_64
  • mips
  • mips64

引用so文件时,如果so文件被放在默认目录下:

  • 在Android Studio中,so文件在jniLibs/CPU_ABI下
  • 在Eclips中,so文件在jni/CPU_ABI下
    那么你不用做额外的设置。

Android开发中so库文件的存放位置

如果so文件没有被放在默认目录下

比如在Android Studio中,so文件放在了libs目录下。则需要在build.gradle中添加设置,来指定实际存放目录。

android {
    ...
    sourceSets {
        ...
        main.jni.srcDirs = []
        main.jniLibs.srcDirs = ['libs']
    }
....