繼上篇文章《Android Studio中NDK開發傻瓜教程(JNI)》以後,本篇介紹CMake技術在Android Studio中的NDK開發。java
源碼地址:android
https://github.com/xiaoliang0227/NDKDemo002git
Step1:新建項目,命名爲NDKDemo002,記得勾選「Include C++ support」github
Step2:一路點擊「Next」,最終點擊「Finish」完成新項目的建立app
Step3:默認項目會自動生成一個cpp文件夾,在main下,該目錄存放C相關的文件,項目自己是能夠運行NDK的,感興趣的你們能夠直接運行試一下。咱們本次教程不使用默認的native-lib.cpp,因此咱們後邊會刪除掉他。原來的項目結構以下:測試
Step4:建立類包「cpp」,並在該包中建立文件」HelloNDK」,內容與結構以下:gradle
Step5:build項目ui
Step6:build完成後app/build/intermediates/classes/debug中結構以下:this
Step7:經過Android Studio 自帶的Terminal定位到文件夾app/build/intermediates/classes/debug,以下:debug
Step8:使用指令,生成c語言頭文件。指令:javah -jni com.zyl.ndkdemo002.cpp.HelloNDK,目標頭文件在app/build/intermediates/classes/debug下,文件名爲「com.zyl.ndkdemo002.cpp.HelloNDK.h」,若是看不到請刷新下項目。示例以下:
」com.zyl.ndkdemo002.cpp.HelloNDK.h「內容以下:
Step9:把「com.zyl.ndkdemo002.cpp.HelloNDK.h」剪切到src/main/cpp中:
Step10:在「src/main/cpp」目錄中新建c source文件「com.zyl.ndkdemo002.cpp.HelloNDK.c」,內容以下:
Step11:配置app目錄下的build.gradle文件,在defaultConfig標籤中將externalNativeBuild修改成如下內容:
externalNativeBuild {
cmake {
cppFlags ""
// 指定只用clang編譯器
// clang是一個C語言、Objective-C、C++語言的輕量級編譯器
arguments "-DANDROID_TOOLCHAIN=clang"
// 生成.so庫的目標平臺
abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86", "x86_64", "mips", "mips64"
}
}
Step12:修改「CMakeLists.txt」文件,將配置的「native-lib」修改成「hellondk」,並配置「com_zyl_ndkdemo002_cpp_HelloNDK.c」
的注入路徑,修改後內容以下:
Step13:「make project」
Step14:生成的動態連接庫文件在項目中的結構以下:
Step15:把該lib下的全部爲文件拷貝到,app下的libs中,刪除掉先前提到 的無用的「native-lib.cpp」,並從MainActivity中刪除相關代碼
Step16:激動人心的時刻到了,測試,若是可以彈出「this is a android ndk hello.」,恭喜你,你成功了。代碼以下: