AndroidStudio2.2 Preview3中NDK開發之CMake和傳統 JNI在目錄結構和配置檔案上的區別
自從AndroidStudio更新到2.2,就有了CMake和傳統JNI兩種開發NDK的方法,主要就是在目錄結構和build.gradle上的區別,下面我們將分別介紹目錄區別和build.gradle種配置的區別(提示:在第一次用CMake時,最好在新建專案時勾選Include C++ Support,這樣這個專案的NDK開發就是CMake方式,這估計也是android以後主推的方式,建好專案,熟悉CMake方式的目錄結構,這樣對以後建普通專案再轉CMake開發NDK有很大幫助,後面會講到普通專案轉NDK開發)
目錄上的區別:
傳統JNI:
CMake:
這兩種方式在目錄上的區別就是兩點:
1.以前的jni目錄改成cpp,位置不變
2.之前對c檔案的編譯配置Android.mk檔案放在jni目錄下,現在改成CMakeLists.txt檔案
(提示:其實Android.mk檔案和CMakeLists.txt可以放在任意目錄下,不過最好放在當前工程目錄下任意位置。後面說build.gradle配置區別就知道了)
build.gradle的區別:
傳統JNI:
CMake:
從上面兩幅圖可以發現,只有兩個紅框中的內容有區別,對於傳統JNI,其實第二個紅框中的內容可以不需要,它所有的配置都在
ndk{ moduleName "hello" abiFilters "x86" }
裡面配置,Android.mk檔案中的內容都不會起作用(提示:但是卻不能刪除它,在下面普通Android專案轉NDK開發就知道),這點有區別於Eclipse開發環境。還有一點,傳統JNI開發,需要在專案根目錄下的gradle.properties檔案中配置
android.useDeprecatedNdk=true
否則Build專案的時候會報錯。
CMake的配置大部分都在CMakeLists.txt檔案中配置,只有較少的一部分放到
cmake {
cppFlags "-std=c++11"
}
裡面配置。CMake的語法規則可以百度。
普通Android專案轉NDK開發專案:
對於普通Android專案,都可以通過滑鼠右擊選擇Link C++ Project with Gradle轉為NDK專案,
通過選擇CMake或者ndk-build使開發NDK採用CMake或者JNI方法,不過此種轉化方法必須符合CMake或者JNI的目錄
結構,也就是說,在上圖操作完成之前,必須先在專案中建好符合CMake或者JNI規則的目錄,假如CMakeLists.txt
檔案中有對xx.cpp/xx.c的引用,那麼必須在cpp目錄下新建好對應的xx.cpp/xx.c,同理,android.mk檔案要是引
用cpp/c檔案,那麼就要在jni目錄新建好對應得檔案.(androidstudio2.2之後新建NDK專案只能得到CMake方式,
所以要想JNI開發,只能普通專案轉)。
-