1. 程式人生 > >AndroidStudio2.2 Preview3中NDK開發之CMake和傳統 JNI在目錄結構和配置檔案上的區別

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開發,只能普通專案轉)。
-