Android Studio 2.2之后红淡,引入了Cmake的構(gòu)建方式來(lái)使用C/C++開(kāi)發(fā),相較于之前Android.mk的方法更加靈活也更加方便在旱。
1. 新建Android Studio工程,勾選C++Support
2. 一路Next到這一步
Step 2
3. 如果沒(méi)報(bào)錯(cuò)那就是完成了桶蝎,報(bào)錯(cuò)可能是你可能沒(méi)有NDK驻仅,如果沒(méi)有的話(huà)需要下載NDK或者指定本地NDK的目錄
Step 3
4. 下載完成后登渣,你需要在當(dāng)前項(xiàng)目的配置中指定NDK目錄
Step 4
5. 現(xiàn)在來(lái)看一下項(xiàng)目的Gradle配置文件,打開(kāi)Module:app的build.gradle文件
Step 5
有兩個(gè)externalNativeBuild模塊
- 指定了defaultConfig里邊的額外構(gòu)建參數(shù)
- 指定了當(dāng)前Module的Cmake配置文件路徑粘优。此路徑相是對(duì)于build.gradle的路徑而言,因?yàn)槠鋵?shí)兩者在同一目錄下竹揍,所以,直接寫(xiě)的是"CmakeLists.txt"
6. CMakeLists.txt文件
一個(gè)標(biāo)準(zhǔn)的CmakeLists.txt文件如下
# 指定最低Cmake版本
cmake_minimum_required(VERSION 3.4.1)
# 添加本地代碼
add_library( native-lib # 本地代碼生成庫(kù)的名稱(chēng)(也就是你在A(yíng)ndroid Studio中寫(xiě)的C/C++代碼)
SHARED # 設(shè)置庫(kù)的類(lèi)型為共享庫(kù)
src/main/cpp/native-lib.cpp ) # 指定源碼文件芬位,也就是cpp文件或c文件,如果有多個(gè)cpp或c
# 文件昧碉,每個(gè)文件之間用空格隔開(kāi)
# 添加NDK中存在的依賴(lài)庫(kù)
find_library( log-lib # 設(shè)置要導(dǎo)入的庫(kù)在本文件中的變量名稱(chēng)(名字可以隨便起)
log ) # 指定要查找的NDK庫(kù)的名稱(chēng)
# 添加第三方的 “.a .o .so” 庫(kù)
add_library( ffmpeg # ffmpeg 設(shè)置第三方庫(kù)在本文件中的變量名稱(chēng)
SHARED # SHARED 庫(kù)的類(lèi)型為共享庫(kù)
IMPORTED) # IMPORTED 庫(kù)是由外部導(dǎo)入
# 設(shè)置第三方庫(kù)的庫(kù)文件位置
set_target_properties( ffmpeg
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libffmpeg.so )
# 設(shè)置第三方庫(kù)的頭文件位置
include_directories(${CMAKE_SOURCE_DIR}/src/libs/ffmpeg/include)
# 關(guān)聯(lián)所有庫(kù)(注意由NDK中添加的庫(kù) ${log-lib}的書(shū)寫(xiě)方式和其他庫(kù)不同)
target_link_libraries( native-lib
${log-lib}
ffmpeg )