Android Studio NDK(工程配置篇)
在Android Studio中開發NDK和以往的Eclipse ADT不同,現在Android Studio除了支援Android.mk之外還支援使用CMake來作為其c/c++的構建工具。
Android.mk
用於向構建系統描述原始檔和共享庫。 它實際上是一小段一小段的Makefile 片段。主要用於定義構建系統和環境變數所未定義的專案範圍設定。
配置專案
在Android Studio(截止2.3.3版本)中使用Android.mk需要自己手動來進行配置(Gradle)。

1.png
如圖1
開啟project中需要新增ndk的module的build.gradle,
圖中的配置意思是:
1、 android.debugConfig.externalNativeBuild
配置編譯過程的引數
可以新增如下圖2的配置:

2.png
如果熟悉c/c++開發,應該對cflag/cppflag這些引數不陌生。具體需要根據專案來進行配置。比如需要使用c++11
則可以配置:
cppFlags "-std=c++11 "
在圖1中配置的abiFilters是指定編譯指定cpu架構x86與armeabi-v7a兩種。
1、 android.debugConfig.ndk
裝載打包配置
在圖1中的配置表示只會將x86與armeabi-v7a打包進入apk,
這個配置可以保證,如果引用的第三方庫存在全架構的庫檔案,而不會把所有的都打包進入apk中。
2、 android.externalNativeBuild
建配置檔案路徑
這個路徑可以隨意填寫,相對路徑地址與build.gradle檔案同級。
編寫好Android.mk之後,當我們在執行打包的時候就會先將配置的靜態/動態編譯出來。

3.png
CMake
跨平臺的編譯配置工具,它可以根據配置來生成不同平臺、不同編譯器的Makefile、vs sln等。通過編寫CMakeLists.txt可以控制編譯過程。
Cmake的配置方法與Android.mk的方式基本一樣。區別只在兩個externalNativeBuild中的ndkBuild換成cmake就可以了。

4.png
CMakeLists.txt的語法相對比Android.mk更簡單。
使用的比較多的配置就下面幾種:
set(x y)
設定一個變數x 值為y
file(GLOB x y z …)
集合x存放有y、z…,一般湧來配置自己的原始檔
add_library(x STATIC/SHARED IMPORTED)
新增一個靜態/動態庫,方式為匯入
set_target_properties(x PROPERTIES IMPORTED_LOCATION y)
配合上面的使用設定匯入路徑
include_directories(x)
引入標頭檔案路徑x, 這樣我們自己編寫的程式碼中能夠使用 #include <> 而不需要使用#include ""
add_subdirectory(x)
會去查詢src/main/cpp/librtmp目錄下查詢CMakeLists.txt檔案,並加入到當前構建中(分模組)
target_link_libraries(x y z …)
連結庫(就是配置我們自己編寫的c/c++的依賴,和java中配置jar包一個意思)
給大家看一個我工程當中用到的一個例子:

5.png
在例子中第四行我引入了另一個CMakeLists.txt,在這個txt中會編譯一個靜態庫,能夠作為預編譯庫來使用:

6.png
小編幫大家整理了一些資料,需要的加QQ群:4112676