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"
}
}


posted @ 2024-03-15 09:17  瓜的呱  阅读(930)  评论(0)    收藏  举报