AndroidStudio使用JNI编程有两种方式,一种就是我们前面说的用ndk-build,
还有一种就是我们这里要说的CMake,AndroidStudio用户构建原生库默认工具就是CMake.
下载构建工具
开始之前,需要下载一些工具,这里我直接贴了官网文档的一张图:

创建支持C/C++的项目
和普通的创建Android项目一样 New Project ,填写完一些项目信息之后, 需要勾住Include C++ support
之后点击一路Next
,最后会有一个C++下拉框,下面直接给出官网的解释:
- C++ Standard:使用下拉列表选择您希望使用哪种 C++ 标准。选择 Toolchain Default 会使用默认的 CMake 设置。
- Exceptions Support:如果您希望启用对 C++ 异常处理的支持,请选中此复选框。如果启用此复选框,Android Studio 会将 -fexceptions 标志添加到模块级 build.gradle 文件的 cppFlags 中,Gradle 会将其传递到 CMake。
- Runtime Type Information Support:如果您希望支持 RTTI,请选中此复选框。如果启用此复选框,Android Studio 会将 -frtti 标志添加到模块级 build.gradle 文件的 cppFlags 中,Gradle 会将其传递到 CMake。
最后finish.在创建完项目之后,在IDE左侧Android视图如下:

cpp 里面是我们的C/C++源码,而下面的CMakeLists.txt
,则是描述如何来构建原生库。
这里我什么都没做,就是读取了一个字符串,然后显示在界面,之后点击运行,界面上就出现了这个字符串。当然也可以根据自己的需求,编写CMakeLists.txt
,这里我就加了一行生成动态分享库:
# Set shared library output directory
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/libs/${ANDROID_ABI}")
重新运行,则会在下面的目录生成对应的so库。

网友评论