在自己编译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下
那么你不用做额外的设置。
如果so文件没有被放在默认目录下
比如在Android Studio中,so文件放在了libs目录下。则需要在build.gradle中添加设置,来指定实际存放目录。
android {
...
sourceSets {
...
main.jni.srcDirs = []
main.jniLibs.srcDirs = ['libs']
}
....
网友评论