1. 開啟Eclipse, 點選Help -> Install New Software

01.png

 

2. 選取Juno - http://download.eclipse.org/releases/juno

02.png

 

3. 下拉選單, 把關於C/C++ 與CDT的全部都勾選, 然後按下Next

(有時候你的電腦並不支援一些選項, 這時候就取消選取)

03.png

 

4. 如果你選的選項都支援的話, Next的案件就會可以按, 接著按下Next

04.png

 

5. 按下同意之後選擇Finish

05.png

 

6. 開始安裝, 會跑出安裝畫面

06.png

 

7. 安裝完畢後, 需要重新啟動Eclipse, 這時可以按下視窗的Yes, 立刻重新啟動

07.png

 

8. 重啟後, 重新執行步驟1, 這次要選擇Android Developer Tools Update Site的選項

打開Developer Tools的項目, 勾選Android Native Development Tools的選項

並把Contact all update sites during install to find required software的選項取消勾選

(這邊有個bug, 就是勾起來會不能安裝, 如果你勾起來可以安裝的話, 建議是勾選)

,之後按下Next

08.png

 

9. 安裝過程中如果他問你要不要安裝這未簽章的內容, 請選擇OK

09.png

 

10. 和步驟7一樣, 安裝完後需要重新啟動Eclipse

10.png

 

11. 上官網https://developer.android.com/tools/sdk/ndk/index.html下載最新的NDK

選擇你對應的作業系統版本, 這邊以Win7 64-bit為例

11.png

 

12. 按下同意後開始下載

12.png

 

13. 下載完後解壓縮, 將解壓縮出來的檔案放在你找的到的地方

13.png

 

14. 接著開啟Eclipse, 點選Window -> Preferences

14.png

 

15. 展開Android, 選擇NDK, 然後按下右邊畫面的Browse, 選取剛解壓縮的資料夾

按下確定, 之後按下OK

15.png

 

16. 開啟一個新Android專案, 這邊以TestNDK命名為例

16.png

 

17. 之後在開啟的專案上點選滑鼠右鍵, 選擇Android Tools -> Add Native Support 

17.png

 

18. 之後為你的Library命名, 這邊是隨意的, 為了鑑別, 以TestNDKLib為例, 然後按下Finish

18.png

 

19. 完成之後會發現你的專案下多了jni的資料夾, 而裡面會有一個mk檔和你剛命名好的.cpp檔案

19.png

 

20. 接著點開cpp檔案, 會發現include <jni.h>前面有個?, 代表找不到該連結

20.png

 

21. 在cpp檔案上按下滑鼠右鍵, 點選Properties進到下列畫面

展開C/C++ build, 點選Paths and Symbols

21.png

 

22. 接著按下右邊的Add, 然後點選Files system..., 選取你下載的NDK位置, 不過這一次

要點選到include那層, 按下確定, 範例路徑如下:
你放的資料夾\android-ndk-r10b\platforms\android-L\arch-arm\usr\include

22.png

 

23. 好了之後會發現路徑顯示在上面, 然後按下OK

23.png

 

24. 之後要要重新啟動Eclipse

24.png

25. 再回到之前的cpp檔, 如果前面的? 消失就代表連結對了, 否則就代表路徑沒設對

25.png

 

26. 之後回到MainActivity.java, 這邊要呼叫Library, 呼叫方法就如同下圖所示

static{

      System.LoadLibrary("Library名稱");

}

26.png

 

27. 接著宣告要從.cpp檔案內呼叫的方法Method的名稱, 在宣告的前頭要加native

這時候不需要先把實體寫出來

27.png

 

28. 然後回到.cpp檔案, 一開始就要用

extern "C"

{

}

這方式, 然後把要寫的東西寫在大括號內

28.png

 

29. 接著要寫你的方法method, 範例如下圖,

JNIEXPORT jstring 這邊的寫法是代表有回傳值是string類型的, 在裡面資料型態前面都會加一個小寫的j

Java_com_example_testndk_MainActivity_StringFromJNI(JNIEnv *env, jobject thiz)

第一個Java是固定的, 然後com_example_testndk就是你package的路徑,

MainActivity是該路徑下的class名稱, StringFromJNI就是你剛宣告的方法名稱

整理一下就會發下他的規則是

Java_Package名稱_class名稱_方法名稱(JNIEnv *env, jobject thiz)

而回傳字串的方法就是return env->NewStringUTF("字串");

29.png

 

30. 前面步驟都完成後, 再回到MainActivity,java, 這邊就以宣告一個TextView的方式

來顯示剛的字串, 做完這步驟

30.png

 

31. 居著點選jni的資料夾, 按下滑鼠右鍵, 選擇New -> File

31.png

 

32. 然後創造一個檔案叫Application.mk, 然後按下OK

32.png

 

33. 點開剛創建的.mk檔, 在裡面加入APP_ABI := all

這是為了讓所有的處理器類型能使用, 也有可能不用這樣加入你的模擬器就能執行了

33.png

 

34. 然後按下執行, 就會看到字串從JNI的.cpp檔案回傳到主畫面

34.png  

arrow
arrow
    全站熱搜

    RX1226 發表在 痞客邦 留言(0) 人氣()