原始出處:http://yarin.blog.51cto.com/1130898/382109
資源準備
說明:本文以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為:http://dl-ssl.google.com/android/eclipse/,然後會出現Android DDMS,和Android Development Tools,選擇並Install.重啟之後可以選擇”Eclipse->喜好設定”,然後選擇Android項來指定Android SDK的安裝目錄.如所示.
5: 開啟terminal,使用"android list targets"發現沒有可以sdk target.需要在eclipse的window菜單裡面開啟 Android SDK And AVD Manager視窗,找到avilable packages,選中相關的packages.如所示.
6:等待下載.完成之後可以在Install packages中找到自己已經安裝的包.如所示.
7:使用"android create avd --name sdk_2_2_version --target 8",建立avd.建立之後即可在”Virtual Devices”中找到我們已經建立的AVD,如所示.
現在可以編寫HelloWorld來測試環境了,這裡筆者在搭建SDK開發環境時將Eclipse和android sdk都放置在了”/Developer/Android/”目錄下,如所示.
搭建Android ndk開發環境
從上面的圖片大家可以看到,我們實際上也將Android NDK安裝到了同一個目錄下,NDK的安裝很簡單,就是將下載的包進行解壓到指定位置即可,解壓之後我們一般需要配置環境變數,這裡我們將環境變數的配置放在最後一起來配置.
設定環境變數
運行命令” pico .bash_profile”來開啟或建立.bash_profile檔案,然後輸入如的代碼.
安”control+x”退出,並輸入”Y”表示確認儲存,然後退出(必須退出重新開啟才行),其中我們將sdk的tools目錄和ndk的安裝目錄都加入了環境變數,方便我們使用,同時設定了ANDROID_NDK_ROOT和ANDROID_SDK_ROOT目錄.
到這裡我們就完成了NDK的環境搭建,android ndk r4開始我們並不需要使用” build/host-setup.sh”命令了,接下來我們將介紹如何使用ndk來編譯.這裡需要注意的是對於ndk提供的例子沒有放置在apps目錄下面了,而是放置在samples中,為了相容,同時也支援將專案檔放置在apps目錄下面.下面我們來看如何編譯,運行和調式.
編譯Hello-Jni工程
進入ndk下面的” samples/hello-jni/”目錄,然後使用命令” ndk-build”即開始編譯,出現如所示,則表示成功.如果不成功,可能是環境沒有設定正確,請檢查並重新設定.
運行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”命令即可,如果出現,則表示編譯成功.
現在你可以在” samples/hello-jni/bin”中找到一個產生的apk檔案,現在可以連結手機或者模擬器來進行測試了.
調式Hello-jni工程
在android ndk r4開始我們可以使用gdb來對jni代碼進行單步調試了,關於gdb調試我們就不多說了,網上去搜尋吧,這裡我們看一下如何來調試.
進入” samples/hello-jni/”目錄,然後執行”ndk-gdb”命令,這時,你的手機或者模擬器的hello-jni工程是否已經啟動了,這時終端也進入了gdb調試介面,如所示.,注意要在xml中設定debug為true才能進行調試哦.
在Eclipse中整合NDK開發
因為大多數人在些代碼時可能使用的是記事本,,有好的IDE為什麼不用呢?那這裡我們就使用Eclipse來編寫ndk程式,在開始之前我們需要進行一些必要的配置.
1:安裝CDT,使得Eclipse具有編輯C++程式的功能.
2:我們推薦大家可以安裝anyedit外掛程式
在http://andrei.gmxhome.de/anyedit/下載並匯入eclipse中.當然這不是必須的,只是方便我們在Eclipse中編輯各種類型的檔案.
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_ROOT為NDK的安裝路徑….整個介面操作之後如所示.
接著開啟“refresh”的tab面板:
選中“Refresh resources upon completion”
選擇“Specific resources”
點擊“Specify resources”按鈕,選擇你項目的lib目錄
選中“Recursively include sub-folders”
操作完成之後如所示.
接著開啟“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目錄,並包含所有的檔案。
完成之後如所示.
點擊“OK”按鈕。完成配置,這時當我們在Ecisplse中改動一下C++代碼,Eclipse都回自動調用ndk來編譯,並在控制台輸出編譯資訊,如所示.然後自動更新產生的so檔案.
這裡處理都不是必須的,只是為了我們方便開發而做的.當然為了項目需求可能還會有更好的方法,隨著項目的進度,我們會更新一些開發中遇到的問題.先寫到這裡,謝謝大家支援!
其實要是在ndk中開發opengl es程式也可以直接在windows中使用VC之類的工具先開發,完成之後再用ndk來編譯,這樣調試就方便多了。