Android NDK开发之旅(2):Android Studio中使用CMake进行NDK/JNI开发(初级)
(码字不易,转载请声明出处:http://blog.csdn.net/andrexpert/article/details/72904462)
前 言
上篇文章我们详细介绍了Eclipse中NDK/JNI开发的相关原理,由于谷歌停止了对Eclipse的更新,未来AndroidStudio必然会完全替代Eclipse。基于此,本文将详细介绍下AndroidStudio中使用CMake进行NDK/JNI开发,相比于使用ndk-build编译Android.mk和配置AS中的build.gradle编译的方式,CMake方式显得更加的简洁、高效。
1. 安装CMake、LLDB
CMake是一款比make更强大的编译自动配置工具,它可以根据不同平台、不同的编译器,并通过CMakeLists.txt文件中简单的语句来描述所有平台的编译过程,生成相应的Makefile文件或project文件。CMake被引入于AndroidStudio2.2,其目的是替代原有的JNI/DNK开发方法,使AS在进行JNI/NDK时更加的方便、高效。CMake的优势如下:
(1) 允许直接在C/C++代码中加入断点,调试;
(2) 在Java层中使用“ctrl+左键”快捷键能够直接进入本地方法对应的C/C++代码中;
(3) 在C/C++中使用“ctrl+鼠标点击”快捷键能够直接进入头文件或库;
(4) 自动生成函数原型头文件,无需配置android.useDeprecatedNdk=true属性;
LLDB是一个高效的C/C++调试器,它提供了丰富的流程控制和数据检测,有效地帮助我们调试程序。AndroidStudio通过引入LLDB调试器,能够实现对NDK本地代码的调试。
2. 配置NDK路径
3. 创建支持C/C++开发的Android工程
(1) 创建新的Android工程,勾选”IncludeC++ Support”选项;
在Customize C++ Support部分,可以使用下列选项自定义项目:
C++ Standard:选择哪一种C++标准,默认选择Toolchain Default选项,其会使用默认的Cmake配置;
Exceptions Support:是否启用对C++异常处理的支持,如果选中,AS会将-fexceptions标志添加到模块级build.grade文件的cppFlags中;
Runtime Type Information Support:是否支持RTTI,如果选中,AS会将-frtti标志添加到模块级build.gradle文件的cppFlags中;
(2) Android工程结构剖析
红框中的文件是创建工程时自动生成的,其中:
(1) .externalNativeBuild文件夹:用于存放cmake编译好的文件,包括支持的各种硬件等信息,