Pages

2012/07/18

Android 使用 JNI, 安裝NDK.

本篇文章主要解說如何在Eclipse中使用JNI程式, 並可自動compile成native函式庫(.so).

1.首先基本需要有Android SDK.
2.說明一下SDK與NDK差別, Android SDK 可以產生使用JAVA寫的應用程式, 而Android    NDK(Native development kit)主要是可以利用C/C++來執行程式. 使用方式為透過JAVA建立JNI來呼叫C/C++所建立的動態函式庫來執行.
3.要建立Native程式在windows作業系統中需要有Cygwin, 搭配Windows版的NDK.

4.安裝Cygwin, 可以參考此文章安裝.
5.安裝NDK, NDK官方網站上有連結可下載.
   android-ndk-r8-windows.zip
6.NDK下載完後,直接解縮在Cygwin目錄下即可.

7.使用文字編輯器開啟, 在Cygwin安裝目錄中的I:\cygwin\home\{使用主名稱}\.bash_profile
   在最後一行加上以下四行, 編輯完後存檔.

PATH=/android-ndk-r8:${PATH}
NDK_ROOT=/android-ndk-r8
NDK_Sample=/android-ndk-r8/samples
export PATH NDK_ROOT NDK_Sample

8.執行I:\cygwin\Cygwin.bat, 進入Cygwin shell, 切換目錄到/android-ndk-r8/samples/hello-jni/
   執行命令 ndk-build, 會開始進行編譯hello-jni, 會產生動態函式庫libhello-jni.so,成功畫面如下.














9.以上已將必要軟體安裝完成, 可以開始進行第一個JNI程式.
10.NDK安裝目錄中已有hello-jni專案, 我們可開啟此專案.
     Eclipse功能表->File->New->Android Project. 選擇Create project from existing source,
     點Browse選擇NDK安裝目錄中的hello-jni目錄
     I:\cygwin\android-ndk-r8\samples\hello-jni, 會自動帶出此專案資料.按下Finish繼續.





















11.在Eclipse的Package中應該會出現Hello-jni專案了, 並可看到lib中已有我們之前compile產生的libhello-jni.so檔案.





















12.接著開始設定自動編譯C程式的部份,在專案名稱按下右鍵,進入設定.
     Properties->Builders, 選擇New,跳出選擇視窗,選擇Program, 按下OK.















13.出現設定視窗, 依欄位填入資訊:
     Name: JNI_Builder
     Locations:I:\cygwin\bin\bash.exe
     Working Directory:I:\cygwin\bin
     Arguments: --login -c "cd $NDK_Sample/hello-jni && ndk-build"
    這裡的$NDK_Sample就是在之前編輯.bash_profile時,填入的目錄位置.所以不同專案需要設定    不同的路徑.





















14.設定還沒結束, 必須要設定讓Eclipse知道什麼時候要啟動編譯.同樣在此視窗中切換到Refresh頁面.勾選Refresh resources upon completion.選擇Specific resources.





















15.在跳出的視窗(Edit Working Set)中, 選擇HelloJni下的libs目錄.按下Finish離開.





















16.切換到Build Options, 勾選下列設定:
     Allocate Console
     Launch in background
     After a "Clean"
     During manual builds
     During auto builds
     Specify working set if relevant resources.





















17.點選Specify Resources, 選擇HelloJni下的jni目錄, 當此目錄中檔案有變動時, 即啟動編譯.





















18.選Finish結束設定, 按下OK, 這時Builder設定視窗中會出現JNI_Builder.















19.按下OK, 離開設定視窗, 回到Eclipse主畫面後, 會開始自動編譯.









20.此時可以開啟hello-jni.c, 編輯內容然後存檔, Eclipse即會開始自動編譯.

No comments:

Post a Comment