最近的项目涉及到JNI编程,经过一段时间的JNI编程之后,终于完美弄完了。所以,把在android studio中编译c/c++文件成.so库的过程记录一下。
在Android studio中使用cmake编译 .so库
1. 安装JNI(java Native Interface)的开发环境。
(1)NDK(Native Development kit):NDK是一个工具集,允许你的App使用一些底层语言代码,例如C和C++。
(2)CMake:CMake是一个跨平台的编译工具,可以用简单的语句来描述所有平台的编译过程,它能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。(谷歌从AndroidStudio2.2以上就添加了Cmake方式来编译NDK代码)
(3)LLDB:支持断点调试c/c++源码。
2. 在Android studio中,创建一个支持c/c++的project。
勾选上那个支持c++的选项:
3. project创建成功之后,会出现cmakelists.txt文件,文件中包含的指令:
(1)cmake的最低版本要求:
cmake_minimum_required(VERSION 3.4.1)
(2)使用 add_library() 的 CMake指令构建脚本添加源文件或库,为了确保 CMake 可以在编译时定位您的标头文件,您需要将 include_directories() 命令添加到 CMake 构建脚本中并指定标头的路径:
demo脚本:
add_library( # Sets the name of the library.
my-native-lib #library的名称
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/main/cpp/native-lib.cpp
src/main/cpp/hello.cpp )
# Specifies a path to native header files.
include_directories(src/main/cpp/include/)
(3)使用find_library添加 NDK库
Android NDK 提供了一套实用的原生 API 和库。通过将 NDK库包含到项目的 CMakeLists.txt 脚本文件中,您可以使用这些 API 中的任意一种。预构建的 NDK 库已经存在于 Android 平台上,因此,您无需再构建或将其封装到 APK 中。由于 NDK 库已经是 CMake 搜索路径的一部分