继上篇文章《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.”,恭喜你,你成功了。代码以下: