Android JNI开发笔记(二)

AndroidStudio使用JNI编程有两种方式,一种就是我们前面说的用ndk-build,
还有一种就是我们这里要说的CMake,AndroidStudio用户构建原生库默认工具就是CMake.

下载构建工具

开始之前,需要下载一些工具,这里我直接贴了官网文档的一张图:

从 SDK 管理器中安装 LLDB、CMake 和 NDK。

创建支持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视图如下:


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库。


shared library

参考文档

  • 向您的项目添加 C 和 C++ 代码

  • CMake

Demo源码

你可能感兴趣的:(Android JNI开发笔记(二))