一、 引入:
在JNI開發中,使用javah和ndk-build組合來進行JNI開發的過程比較麻煩,這裏介紹一下使用高版本的gradle優化JNI開發,我的環境如下:
Android studio:3.5;
gradle:5.4.1;
可在任意工程的File->Project Structure查看:
二、 優化,引入Link C++ Project With Gradle:
- 點擊file,選擇Link C++ Project With Gradle:
- 在彈框中選擇ndk-build,並在Project Path中選擇Android.mk的路徑:
配置好了之後,我們就可以直接使用Android studio的Make Project來編譯工程了,在編譯java文件的過程中也會把jni下面的文件給編譯了,不需要我們再通過cmd去執行ndk-build指令來編譯so庫了,並且,編譯完成之後,不會生成libs和obj等文件夾,生成的so會直接打包到apk中當中,非常方便,我們可以在build目錄中找到這些庫;
另外一個特點是,打開了這個支持以後,我們能夠在進行C/C++代碼編寫的時候自動提示,非常方便,大大提高了效率:
三、 兼容第三方庫:
我們自己編寫的JNI庫是可以直接通過這種方式打包到apk中,但是如果遇到需要加載第三方庫到apk中是,是否可行呢?經過測試,也只需要在app的build.gradle裏面指定libs路徑就行了:
sourceSets {
main {
jni.srcDirs = ['src/main/jni', 'src/main/jni/']
jniLibs.srcDirs = ['libs']
}
}
第三方庫和自己編寫的JNI庫完全可以一起編譯進apk中,並不衝突。