Andorid Studio NDK開發:Experimental Plugin

姜家志發表於2016-06-17

gradle-experimental可以在不用編寫.mk檔案的情況下進行NDK開發。

做NDK開發有件比較麻煩的事情就是Application.mkAndroid.mk的編寫。而gradle-experimental就是用來解決這個麻煩的。

gradle-experimental是Android Studio的一個實驗性的專案,基於gradle的一個外掛,主要用來自動化NDK的配置實現,無需自己編寫Application.mkAndroid.mk,對於除錯NDK專案也更加的友好。

環境要求:

  • gradle>2.10
  • Android NDK r10e
  • Build Tools 19.0.0

配置gradle-experimental

  • 新增依賴
    在專案的主目錄下./build.gradle替換build tools,使用gradle-experimental
  • 替換外掛
    在gradle中不能再使用com.android.application了,需要使用com.android.model.application替代。
  • 在專案主目錄下的./app/build.gradle中更改plugin

    apply plugin: “com.android.model.application”

  • 配置model{}

配置NDK

在配置NDK之前需要確認:

  • NDK包是否下載
  • NDK的環境變數是否配置

以上配置完成之後,在./app/build.gradle中配置android.ndk

這裡定義的moduleName就是後面生成的NDK的包名。

原始碼配置

預設情況下,我們在src/main/jni下使用的是c/c++檔案。需要在model.android中指定:

分別指定了java原始碼和jni原始碼的目錄。

NDK程式碼

在java裡面定義一個native方法,native標識的方法會需要在jni中實現,在java中呼叫。

出現一個紅色的警告:

Andorid Studio NDK開發:Experimental Plugin

可以使用alt+enter鍵自動生成jni方法:

Andorid Studio NDK開發:Experimental Plugin

生成的jni方法

修改jni方法返回的內容

執行

開啟Toolbar中的執行配置選單,可以看到:

Andorid Studio NDK開發:Experimental Plugin
多出了一個app-native的選單,可以直接執行。

呼叫NativeUtil.firstNative的方法,會得到jni中寫好的返回值:

is first native

可以看到使用gradle-experimental開發NDK,不用複雜的配置,自動化native方法,不需要定義.h標頭檔案,對除錯友好。

文中原始碼地址:https://github.com/jjz/android/tree/master/experimental

相關文章