1. 程式人生 > >Android ndk r4b開發環境搭建

Android ndk r4b開發環境搭建

說明:本文以Mac系統為例,所以準備的軟體都需要是適合Mac版本的.

Android SDK:android-sdk-mac_86

Android NDK: android-ndk-r4b-darwin-x86

Eclipse

ADT

CDT

ANT

搭建Android SDK開發環境

Android SDK還發環境搭建步驟:

1:Jdk安裝,要求1.5以上.一般的Mac OS中已經預裝了jdk,我的是jdk 1.6."java -version"terminal可以檢視.

2:eclipse IDE安裝.需要去Eclipse官網下載,我下載的是eclipse 3.5.2.解壓到合適的路徑,不需要編譯安裝,直接執行目錄下的

eclipse.app檔案就可以啟動eclipse.

3:android sdk安裝.Android.eclipse一樣,只需要解壓到合適目錄.同時需要將該目錄下的tools路徑加到PATH.編輯~/.bash_profile,新增:PATH=${PATH}:/{your-android-sdk}/tools.

4:安裝Android Developer Tools.開啟Eclipse,點選Help選單,找到Install New Sofeware,在Add Site中新增一個location為:,然後會出現Android DDMS,Android Development Tools,選擇並

Install.重啟之後可以選擇”Eclipse->偏好設定”,然後選擇Android項來指定Android SDK的安裝目錄.如下圖所示.

C:/Users/LOUIEL~1.TEN/AppData/Local/Temp/msohtmlclip1/01/clip_image001.jpg

5:開啟terminal,使用"android list targets"發現沒有可以sdk target.需要在eclipsewindow選單裡面開啟Android SDK And AVD Manager視窗,找到avilable packages,選中相關的packages.如下圖所示.

C:/Users/LOUIEL~1.TEN/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg

6:等待下載.完成之後可以在Install packages中找到自己已經安裝的包.如下圖所示.

C:/Users/LOUIEL~1.TEN/AppData/Local/Temp/msohtmlclip1/01/clip_image003.jpg

7:使用"android create avd --name sdk_2_2_version  --target 8"

,建立avd.建立之後即可在”Virtual Devices”中找到我們已經建立的AVD,如下圖所示.

C:/Users/LOUIEL~1.TEN/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg

現在可以編寫HelloWorld來測試環境了,這裡筆者在搭建SDK開發環境時將Eclipseandroid sdk都放置在了”/Developer/Android/”目錄下,如下圖所示.

C:/Users/LOUIEL~1.TEN/AppData/Local/Temp/msohtmlclip1/01/clip_image005.jpg

搭建Android ndk開發環境

從上面的圖片大家可以看到,我們實際上也將Android NDK安裝到了同一個目錄下,NDK的安裝很簡單,就是將下載的包進行解壓到指定位置即可,解壓之後我們一般需要配置環境變數,這裡我們將環境變數的配置放在最後一起來配置.

設定環境變數

執行命令” pico .bash_profile”來開啟或建立.bash_profile檔案,然後輸入如下圖的程式碼.

C:/Users/LOUIEL~1.TEN/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg

”control+x”退出,並輸入”Y”表示確認儲存,然後退出(必須退出重新開啟才行),其中我們將sdktools目錄和ndk的安裝目錄都加入了環境變數,方便我們使用,同時設定了ANDROID_NDK_ROOTANDROID_SDK_ROOT目錄.

到這裡我們就完成了NDK的環境搭建,android ndk r4開始我們並不需要使用” build/host-setup.sh”命令了,接下來我們將介紹如何使用ndk來編譯.這裡需要注意的是對於ndk提供的例子沒有放置在apps目錄下面了,而是放置在samples,為了相容,同時也支援將專案檔案放置在apps目錄下面.下面我們來看如何編譯,執行和調式.

編譯Hello-Jni工程

進入ndk下面的” samples/hello-jni/”目錄,然後使用命令” ndk-build”即開始編譯,出現如下圖所示,則表示成功.如果不成功,可能是環境沒有設定正確,請檢查並重新設定.

C:/Users/LOUIEL~1.TEN/AppData/Local/Temp/msohtmlclip1/01/clip_image007.jpg

執行Hello-Jni專案

下面我們首先生成apk檔案,生成apk檔案需要使用ant,由於Mac系統預裝了ant所以我們少一步,沒有安裝的安裝一下便可,注意安裝之後還是要將ant目錄下買了的bin目錄加入環境變數才行.

現在使用” cd ../”命令返回hello-jni目錄的上一個目錄,然後使用” android update project --path hello-jni”命令來更新hello-jni工程,就是生成一個build.xml檔案來編譯生成apk檔案.在更新了工程之後,需要進入工程的根目錄,使用cd hello-jni命令即可,下面進入最關鍵的一步,編譯apk檔案,使用”ant debug”命令即可,如果出現如圖所示,則表示編譯成功.

C:/Users/LOUIEL~1.TEN/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg

現在你可以在” samples/hello-jni/bin”中找到一個生成的apk檔案,現在可以連結手機或者模擬器來進行測試了.

調式Hello-jni工程

android ndk r4開始我們可以使用gdb來對jni程式碼進行單步除錯了,關於gdb除錯我們就不多說了,網上去搜索吧,這裡我們看一下如何來除錯.

進入” samples/hello-jni/”目錄,然後執行”ndk-gdb”命令,這時,你的手機或者模擬器的hello-jni工程是否已經啟動了,這時終端也進入了gdb除錯介面,如下圖所示.,注意要在xml中設定debugtrue才能進行除錯哦.

C:/Users/LOUIEL~1.TEN/AppData/Local/Temp/msohtmlclip1/01/clip_image009.jpg

Eclipse中整合NDK開發

因為大多數人在些程式碼時可能使用的是記事本,,有好的IDE為什麼不用呢?那這裡我們就使用Eclipse來編寫ndk程式,在開始之前我們需要進行一些必要的配置.

1:安裝CDT,使得Eclipse具有編輯C++程式的功能.

2:我們推薦大家可以安裝anyedit外掛

3:新建一個ndk的工程,這裡我們就使用hello-jni為例來演示即可,就不在單獨新建了,hello-jni匯入到Eclipse.然後按照如下步驟操作:

右擊專案,選擇“properties”

在左邊的列表中選擇“Builders”

在右側,點選“New…”按鈕

在列表框,選擇“Program”作為配置型別;點選“OK”按鈕,進入下一個配置對話方塊。

命名name“NDK Builder”

選擇Location“/bin/bash”,如果是windows使用cygwin則填寫” c:/cygwin/bin/bash.exe”其中表明cygwin安裝於c:/cygwin,這個路徑可以根據自己的情況更改.

 “Working Directory”“/bin”,同樣如果在windows上使用cygwin則填寫” c:/cygwin/bin”.

“Arguments”為:

--login -c "cd $ANDROID_NDK_ROOT/samples/hello-jni && ndk-build"

確保在login前有兩個連線號,-c後面的引號。ANDROID_NDK_ROOTNDK的安裝路徑….整個介面操作之後如下圖所示.

C:/Users/LOUIEL~1.TEN/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpg

接著開啟“refresh”tab面板:

選中“Refresh resources upon completion”

選擇“Specific resources”

點選“Specify resources”按鈕,選擇你專案的lib目錄

選中“Recursively include sub-folders”

操作完成之後如下圖所示.

C:/Users/LOUIEL~1.TEN/AppData/Local/Temp/msohtmlclip1/01/clip_image011.jpg

接著開啟“Build Options”tab面板:

選中“Allocate Console”

選中“Launch in background”

選中“Run the builder After a Clean”

選中“Run the builder During manual builds”

選中“Run the builder During auto builds”

選中“Specify working set of relevant resources”

點選“Specify Resources”按鈕,選擇你專案的JNI目錄,幷包含所有的檔案。

完成之後如下圖所示.

C:/Users/LOUIEL~1.TEN/AppData/Local/Temp/msohtmlclip1/01/clip_image012.jpg

點選“OK”按鈕。完成配置,這時當我們在Ecisplse中改動一下C++程式碼,Eclipse都回自動呼叫ndk來編譯,並在控制檯輸出編譯資訊,如下圖所示.然後自動更新生成的so檔案.

C:/Users/LOUIEL~1.TEN/AppData/Local/Temp/msohtmlclip1/01/clip_image013.jpg