Android Studio 2.2之后,引入了Cmake的构建方式来使用C/C++开发,相较于之前Android.mk的方法更加灵活也更加方便。
1. 新建Android Studio工程,勾选C++Support
2. 一路Next到这一步
Step 23. 如果没报错那就是完成了,报错可能是你可能没有NDK,如果没有的话需要下载NDK或者指定本地NDK的目录
Step 34. 下载完成后,你需要在当前项目的配置中指定NDK目录
Step 45. 现在来看一下项目的Gradle配置文件,打开Module:app的build.gradle文件
Step 5有两个externalNativeBuild模块
- 指定了defaultConfig里边的额外构建参数
- 指定了当前Module的Cmake配置文件路径。此路径相是对于build.gradle的路径而言,因为其实两者在同一目录下,所以,直接写的是"CmakeLists.txt"
6. CMakeLists.txt文件
一个标准的CmakeLists.txt文件如下
# 指定最低Cmake版本
cmake_minimum_required(VERSION 3.4.1)
# 添加本地代码
add_library( native-lib # 本地代码生成库的名称(也就是你在Android Studio中写的C/C++代码)
SHARED # 设置库的类型为共享库
src/main/cpp/native-lib.cpp ) # 指定源码文件,也就是cpp文件或c文件,如果有多个cpp或c
# 文件,每个文件之间用空格隔开
# 添加NDK中存在的依赖库
find_library( log-lib # 设置要导入的库在本文件中的变量名称(名字可以随便起)
log ) # 指定要查找的NDK库的名称
# 添加第三方的 “.a .o .so” 库
add_library( ffmpeg # ffmpeg 设置第三方库在本文件中的变量名称
SHARED # SHARED 库的类型为共享库
IMPORTED) # IMPORTED 库是由外部导入
# 设置第三方库的库文件位置
set_target_properties( ffmpeg
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libffmpeg.so )
# 设置第三方库的头文件位置
include_directories(${CMAKE_SOURCE_DIR}/src/libs/ffmpeg/include)
# 关联所有库(注意由NDK中添加的库 ${log-lib}的书写方式和其他库不同)
target_link_libraries( native-lib
${log-lib}
ffmpeg )
网友评论