Starting from AndroidStudio2.2, CMake is used by default to build NDK projects, or ndk-build can also be used. Here we mainly introduce the CMake method.
First, introduce the download and installation of NDK. On the SDK settings page, select the SDK Tools panel to download the NDK.
As shown in the figure, you need to download CMake, LLDB, NDK components:
- NDK
- CMake
- LLDB
Create projects with C/C++ support by default
- 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