从AndroidStudio2.2版本开始,默认使用 CMake 的方式来构建NDK项目,也可以使用 ndk-build 的方式,这里我们主要介绍 CMake 的方式。
首先,介绍 NDK 的下载与安装,在SDK设置那个页面,选择SDK Tools面板,就可以下载NDK。
如图所示,需要下载CMake、LLDB、NDK组件:
- NDK
- CMake
- LLDB
默认创建带C/C++ 支持的项目
- C++ Standard
- Exceptions Support
- Runtime Type Information Support
- cpp目录存放C/C++的头文件或者源文件
- External Build Files存放我们的CMake脚本文件,这是通过Gradle来进行配置的。
项目自动生成的部分c++代码:
自动生成的部分Java代码:
自动生成的build.gradle文件:
android里多了:
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
defaultConfig 里多了:
externalNativeBuild {
cmake {
cppFlags ""
}
}
我们可以看下CMakeLists.txt里面的配置:
- add_library
里面有三个参数配置:
native-lib:设置库的名字为native-lib,名字可以任意,但是要和System.loadLibrary("native-lib");保持一致 。
SHARED:可以分享的,动态库。
src/main/cpp/native-lib.cpp:配置源文件或者头文件的路径
- find_library
将find_library()命令添加到CMake构建脚本中以定位NDK库,并将其路径存储为一个变量。可以使用此变量在构建脚本的其他部分引用NDK库。
log:找到log模块
- target_link_libraries
指定要关联到原生库的库,第一个自然是我们add_library里面指定的库名字native-lib库,然后可以看到${log-lib},也就是引用了find_library里面定义的日志库。
经过上面一系列的配置,项目就可以正常运行起来了。
实例:
我们可以稍微修改代码,然后传一个字符串,在界面显示出来
输出的结果为:
为已有项目添加C/C++支持
在cmake-jni的目录下面创建一个File,名字为CMakeLists.txt,推荐使用这个名字和文件路径。
注意:必须先创建源文件,否则下面创建CMake脚本同步的时候不会通过。
注意:
1. 路径一定要注意跟我们所创建的目录名字一致,注意你创建的是“jni”还是“cpp”目录,否则同步不了。例如我们刚刚通过 Android Studio 创建的目录实质上是“jni”目录,因此这里写jni。你也可以手动创建 cpp目录,然后这里写 cpp目录,与标准的项目一样。
2.我们创建的有可能是 C 也有可能是 C++,所以这里要注意写 .c 还是 .cpp 后缀,否则同步会失败。
然后选中 app,右击,选择下图中的选项:
找到我们创建的脚本文件,确认:
Android Studio 就会自动同步,然后在 cmake-jni模块的 build.gradle文件自动添加配置:
输出的结果为:
参考文章:
http://mp.weixin.qq.com/s/5DHJa5E-lZzy21-9edxoIg
http://mp.weixin.qq.com/s/_qwK5VNI40TO44eonDLo2
http://blog.csdn.net/qq_35071078/article/details/70544766