Gradle中jniLibs的相关配置和解释
很多项目或者在引入三方项目时,需要加载部分so文件(C++打包的库),
这时会遇到一个问题,放到哪个目录才会被项目正常加载或者可以放到其它任意目录吗?
在Android Studio中,项目则会默认匹配main下的jniLibs目录,如果没有目录需要自己手动创建。
并且库的名称也不能随便更改(只有放到该位置并且目录名是jniLibs才会被默认加载)。
但是这里会有一个问题,就是如果使用的是AndroidStudio,但是想用libs下的库,还需要手动去指定库的位置:
在App下的build.gradle中加入以下配置。
android {
......
sourceSets {
main {
jniLibs.srcDirs = ['libs']
......
}
......
}
......
}
另外,如果使用fataar打包so,导入studio后,发现so库都是放在jni下面的

如果aar包只适配了armeabi-v7a(即只在jniLibs/armeabi-v7a目录下存放了对应的so包),在我们app的gradle文件中同样需要指定armeabi-v7a,否则是加载不了对应so包的(运行时会报错找不到xxx.so)
defaultConfig {
......
ndk {
abiFilters "armeabi-v7a"
}
}
浙公网安备 33010602011771号