安裝cygwin:html
因爲NDK編譯代碼時必需要用到make和gcc,因此你必須先搭建一個linux環境, cygwin是一個在windows平臺上運行的unix模擬環境,它對於學習unix/linux操做環境,或者從unix到windows的應用程序移植,很是有用。經過它,你就能夠在不安裝linux的狀況下使用NDK來編譯C、C++代碼了。下面咱們一步一步的安裝cygwin吧。linux
首先要下載cygwin的安裝程序setup.exe,下載地址爲:android
下載完成後雙擊運行setup.exe,能夠看到嚮導界面以下:windows
點擊下一步,此時讓你選擇安裝方式:bash
1)Install from Internet:直接從Internet上下載並當即安裝(安裝完成後,下載好的安裝文件並不會被刪除,而是仍然被保留,以便下次再安裝)。服務器
2)Download Without Installing:只是將安裝文件下載到本地,但暫時不安裝。網絡
3)Install from Local Directory:不下載安裝文件,直接從本地某個含有安裝文件的目錄進行安裝。app
下面測試一下cygwin是否是已經安裝好了:eclipse
運行cygwin,在彈出的命令行窗口輸入:cygcheck -c cygwin命令,會打印出當前cygwin的版本和運行狀態,若是status是ok的話,則cygwin運行正常。而後依次輸入gcc –version,g++ --version,make –version,gdb –version進行測試,若是都打印出版本信息和一些描述信息,很是高興的告訴你,你的cygwin安裝完成了!
下載Android NDK:
下載站點:
http://dl.google.com/android/ndk/android-ndk-r4-windows.zip
http://androidappdocs.appspot.com/sdk/ndk/index.html
http://developer.android.com/sdk/ndk/overview.html
若是上面的站點下載不了,也能夠到網上找一些下載站點,下載r4版本的android_ndk,下載後直接解壓便可。能夠考慮和android SDK放在相同的目錄下,對之後的開發可能會帶來一些便利。
配置NDK環境變量
首先找到cygwin的安裝目錄,找到一個home/<你的用戶名>/.bash_profile文件,個人是C:/cygwin/home/Administrator/.bash_profile,(若是找不到,那就到網上去找解決辦法把,這種狀況確實可能發生)打開bash_profile文件,添加以下內容(根據你的ndk的安裝目錄,個人是D盤android-ndk-r4):
ANDROID_NDK_ROOT=/cygdrive/d/android-ndk-r4
export ANDROID_NDK_ROOT
ANDROID_NDK_ROOT這個名字是隨便取的,爲了方面之後使用方便,選個簡短的名字,而後保存。打開cygwin,輸入cd $ANDROID_NDK_ROOT,若是輸出上面配置的/cygdrive/d/android-ndk-r4信息,則代表環境變量設置成功了。
安裝eclipse組件:
Android SDK 和 ADT就不介紹了,下面介紹一個新的組件——CDT。CDT是eclipse開發c++的組件包,這裏聲明一下,使用NDK開發android是不須要CDT的。若是你安裝了CDT,會在之後review別人的c++ code時帶來一些方便。能夠到CSDN上下載CDT的壓縮包,加壓後把對應的目錄下的文件拷貝到eclipse的對應目錄下就能夠了。
部署並運行第一個hello-jni例子
用NDK來編譯程序:
如今咱們用安裝好的NDK來編譯一個簡單的程序吧,咱們選擇ndk自帶的例子hello-jni,個人位於D:/android-ndk-r4/samples/hello-jni(根據你具體的安裝位置而定),運行cygwin,輸入命令cd /cygdrive/d/android-ndk-r4/samples/hello-jni,進入到D:/android-ndk-r4/samples/hello-jni目錄。輸入$ANDROID_NDK_ROOT/ndk-build,執行成功後,它會自動生成一個libs目錄,把編譯生成的.so文件放在裏面。($ANDROID_NDK_ROOT是調用咱們以前配置好的環境變量,ndk-build是調用ndk的編譯程序),此時去hello-jni的libs目錄下看有沒有生成的.so文件,若是有,你的ndk就運行正常啦!
在eclipse中配置參數編譯源碼生成.so文件
1)導入hello-jni工程
2)這時你的工程可能會報錯,不要緊,工程右鍵選擇Build path->config Build path,以下圖:
而後選擇builders->new,以下圖:
選擇program,配置以下圖:
出現了添加界面,首先給編譯配置起個名字,如:C_Builder或者是默認的New_Builder,如上圖,
設置Location爲<你cygwin安裝路徑>/bin/bash.exe程序,例如:C:/cygwin/bin/bash.exe;
設置Working Directory爲<你cygwin安裝路徑>/bin目錄,例如:C:/cygwin/bin
設置Arguments爲:
--login -c "cd /cygdrive/d/android-ndk-r4/samples/hello-jni && $ANDROID_NDK_ROOT/ndk-build"
上面的配置中/cygdrive/e/android-ndk-r5/samples/hello-jni是你當前要編譯的程序的目錄,$ANDROID_NDK_ROOT是以前配置的ndk的環境變量,這兩個根據你具體的安裝目錄進行配置,其餘的不用變,Arguments這串參數實際是給bash.exe命令行程序傳參數,進入要編譯的程序目錄,而後運行ndk-build編譯程序。
接着配置refresh選項:
勾選Refresh resources upon completion
再配置Build Options選項,以下圖:
勾選上最後三項,以後點擊Specify Resources按鈕,選擇資源目錄,勾選你的項目目錄便可:
最後點擊Finish,點擊OK一路把剛纔的配置都保存下來,注意:若是你配置的編譯器在其它編譯器下邊,記得必定要點Up按鈕,把它排到第一位,不然C代碼的編譯晚於Java代碼的編譯,會形成你的C代碼要編譯兩次才能看到最新的修改,以下圖,必定要保證New_Builder在第一位:
如今來測試一下是否能夠自動編譯呢,打開項目jni目錄裏的hello-jni.c文件把提示Hello from JNI!改爲其餘的文字:如:"Hello,My name is lusifer.",而後再模擬器中運行你的程序,若是模擬器中顯示了你最新修改的文字,那麼你已經所有配置成功啦!
轉自:http://ygc87.blog.163.com/blog/static/2396065201221063030169/