[Android]Cygwin使用及NDK編譯方法

在Windows XP, Cygwin, NDK SDK r5b下成功編譯了ffmpeg,下面是完整的編譯過程:php

1、準備工做

二、下載Cygwin, 請猛擊這裏html

三、下載Android SDK,請猛擊這裏,Android SDK的網頁android

四、下載Android NDK SDK r5b, 請猛擊這裏,NDK SDK的網頁c++

五、下載ffmpeg,能夠下載壓縮包,也能夠git一個snapshotgit

好了,有必要說明一下Android SDK和Android NDK SDK的區別:windows

  • Android SDK用於開發Android程序,開發語言爲Java,主要用於界面,只能調用系統提供的功能;
  • 若是要追求高效率和實現底層一點的功能,就必須得用NDK了,NDK實際上在桌面系統上提供了交叉編譯器,使你可以在桌面系統上編譯和調試Anroid程序,開發語言是C和C++,google官方文檔裏說了,能夠只使用C/C++開發應用程序,能夠不使用Java,原文以下:Starting from API level 9, it is possible to entirely write an Android
    application with native code (i.e. without any Java). That does not mean
    that your code does not run inside a VM though, and most of the features
    of the platform will still need to be accessed through JNI.For more information about this topic, please read the dedicated
    document named docs/NATIVE-ACTIVITY.html (TODO: WRITE DOC).文檔:android-ndk-r5b/docs/STABLE-APIS.html

    還帶了個例子,例子見\android-ndk-r5b\samples\native-activity\,有興趣的同窗能夠研究一下bash

 

2、安裝過程

一、安裝Cygwin

1)下載了一個setup.exe,運行以後,以下圖所示:

image

2)點下一步,就出現下圖界面:

image

3)默認選擇第一項不變,再次點下一步,就顯示出下面的界面:

image

4)選擇一個根路徑,選擇一個硬盤空間比較大的盤,會安裝不少東東的,我選擇g:盤,接着下一步,你們就看到下面的界面了:

image

5)好了,繼續下一步,各位看官耐心點,立刻就到重點了:

image

6)OK,繼續,還真羅嗦啊,下一步,見下圖:

image

7)選擇一個下載站點,我選擇了臺灣的ftp服務器,速度還挺快的,仍是下一步,以下:

image

 

image

8)重點到了,注意選擇要安裝的包,其餘的默認就好了,關鍵的是Devel,要選擇下面幾個包:

autoconf服務器

automakeapp

binutilseclipse

gcc

gcc-core

gcc-g++

gdb

libstdc++

make

若是懶得找,就直接點Devel旁邊的那個default,變成Install就會所有都裝了,不過要下載很長時間,安裝完以後有2G多的空間,若是隻選上面的幾項,會快不少。

若是懶得找,就直接點Devel旁邊的那個default,變成Install就會所有都裝了,不過要下載很長時間,安裝完以後有2G多的空間,若是隻選上面的幾項,會快不少。

好了,接着下一步,耐心等待安裝完,能夠去吃個泡麪先。

9)設置系統的Path環境變量到G:\cygwin\bin

二、配置SDK

NDK得依賴SDK,因此必須得先配置SDK

1)將下載到的android-sdk_r10-windows.zip,解壓到磁盤的跟目錄下,好比:e:\android_sdk;

2)設置系統的Path環境變量到e:\android_sdk\platform-tools,若是不設置的話,運行ndk-build的時候會提示adb不在當前Path下。

三、配置NDK

1)將下載到的android-ndk-r5b-windows.zip文件解壓到一個文件夾裏,最好路徑短點,個人放在E:\android\android-ndk-r5b下;

2)設置系統的Path環境變量到e:\android\android-ndk-r5b,輸入命令行的時候簡單一點。

3、測試配置環境

1)運行cmd

2)輸入bash,若是提示「'bash' 不是內部或外部命令,也不是可運行的程序或批處理文件。」請檢查cygwin的path路徑是否設置正確,運行後控制檯會變成下面的樣子:

image

3)在bash裏面輸入

$cd /cygdrive/e/android/android-ndk-r5b/samples/hello-jni

注意:Cygwin和Mingw不同,本地磁盤前面有/cygdrive/前綴

4)在bash裏面輸入

$ndk-build

若是出現以下畫面,而且存在這個文件:e:\android\android-ndk-r5b\samples\hello-jni\obj\local\armeabi\libhello-jni.so,恭喜你完成了第一階段的工做,真不容易啊

image

八、 此時會下載加載安裝包列表

九、Search是能夠輸入你要下載的包的名稱,可以快速篩選出你要下載的包。那四個單選按鈕是選擇下邊樹的樣式,默認就行,不用動。View默認是Category,建議改爲full顯示所有包再查,省的一些包被隱藏掉。左下角那個複選框是是否隱藏過時包,默認打鉤,不用管它就行,下邊開始下載咱們要安裝的包吧,爲了不所有下載,這裏列出了後面開發NDK用得着的包:autoconf2.一、automake1.十、binutils、gcc-core、gcc- , g++、gcc4-core、gcc4-g++、gdb、pcre、pcre-devel、gawk、make(寧肯多選,不能少選)共12個包.

十、  而後開始選擇安裝這些包吧,點skip,把它變成數字版本格式,要確保Bin項變成叉號,而Src項是源碼,這個就不必選了。

十一、  下面測試一下cygwin是否是已經安裝好了。

運行cygwin,在彈出的命令行窗口輸入:cygcheck -c cygwin命令,會打印出當前cygwin的版本和運行狀態,若是status是ok的話,則cygwin運行正常。

而後依次輸入gcc –v,g++  --version,make –version,gdb –version進行測試,(注意空格和-)若是都打印出版本信息和一些描述信息,很是高興的告訴你,你的cygwin安裝完成了!

三:配置NDK環境變量

一、  首先找到cygwin的安裝目錄,找到一個home\<你的用戶名>\.bash_profile文件,個人是:E:\cygwin\home\Administrator\.bash_profile,(注意:我安裝的時候個人home文件夾下面神馬都沒有,解決 的辦法:首先打開環境變量,把裏面的用戶變量中的HOME變量刪掉,在E:\cygwin\home文件夾下創建名爲Administrator的文件夾(是用戶名),而後把E:\cygwin\etc\skel\.bash_profile拷貝到該文件夾下)。

二、  打開bash_profile文件,添加NDK=/cygdrive/<你的盤符>/<android ndk 目錄> 例    如:NDK=/cygdrive/e/android-ndk-r5

export NDK

NDK這個名字是隨便取的,爲了方面之後使用方便,選個簡短的名字,而後保存

三、打開cygwin,輸入cd $NDK,若是輸出上面配置的/cygdrive/e/android-ndk-r5信息,則代表環境變量設置成功了。

四:用NDK來編譯程序

一、  如今咱們用安裝好的NDK來編譯一個簡單的程序吧,咱們選擇ndk自帶的例子hello-jni,個人位於E:\android-ndk-r5\samples\hello-jni(根據你具體的安裝位置而定),

二、 運行cygwin,輸入命令cd /cygdrive/e/android-ndk-r5/samples/hello-jni,進入到E:\android-ndk-r5\samples\hello-jni目錄。

三、 輸入$NDK/ndk-build,執行成功後,它會自動生成一個libs目錄,把編譯生成的.so文件放在裏面。($NDK是調用咱們以前配置好的環境變量,ndk-build是調用ndk的編譯程序)

四、  此時去hello-jni的libs目錄下看有沒有生成的.so文件,若是有,你的ndk就運行正常啦!

生成以後,這時候能夠再用ndk的samples裏邊的例子生成eclipse工程了.

以下,選擇新建android工程而後以下圖:

 

而後就能夠試驗其餘的幾個例子了.我也還在研究中, 你們一塊兒加油!!!

五:在eclipse中集成c/c++開發環境

(這個好像在國內悲劇啊,下不動啊,在傳兩個fan牆的軟件)

一、 裝Eclipse的C/C++環境插件:CDT,這裏選擇在線安裝。

首先登陸http://www.eclipse.org/cdt/downloads.php,找到對應你Eclipse版本的CDT插件的在線安裝地址。

二、  而後點Help菜單,找到Install New Software菜單

三、  點擊Add按鈕,把取的地址填進去,出來插件列表後,選Select All,而後選擇下一步便可完成安裝

四、  安裝完成後,在eclispe中右擊新建一個項目,若是出現了c/c++項目,則代表你的CDT插件安裝成功啦!

六:配置C/C++的編譯器

(建議先用命令行編譯,而後再研究google ndk samples 裏邊的例子, 而後再研究傻瓜式的編譯)

一、  打開eclipse,導入ndk自帶的hello-jni例子,右鍵單擊項目名稱,點擊Properties,彈出配置界面,以後再點擊Builders,彈出項目的編譯工具列表,以後點擊New,新添加一個編譯器,點擊後出現添加界面,選擇Program,點擊OK

二、  出現了添加界面,首先給編譯配置起個名字,如:C_Builder

設置Location爲<你cygwin安裝路徑>\bin\bash.exe程序,例如:E:\cygwin\bin\bash.exe,設置Working  Directory爲<你cygwin安裝路徑>\bin目錄,例如:E:\cygwin\bin

設置Arguments爲

--login -c "cd /cygdrive/e/android-ndk-r5/samples/hello-jni && $NDK/ndk-build"(不能改動的,--login –c 是神馬意思我也不懂)

上面的配置中/cygdrive/e/android-ndk-r5/samples/hello-jni是你當前要編譯的程序的目錄,$NDK是以前配置  的ndk的環境變量,這兩個根據你具體的安裝目錄進行配置,其餘的不用變,Arguments這串參數實際是  給bash.exe命令行程序傳參數,進入要編譯的程序目錄,而後運行ndk-build編譯程序

三、 接着切換到Refresh選項卡,給Refresh resources upon completion打上鉤

四、  而後切換到Build Options選項卡,勾選上最後三項

五、  以後點擊Specify Resources按鈕,選擇資源目錄,勾選你的項目目錄便可

六、  最後點擊Finish,點擊OK一路把剛纔的配置都保存下來,注意:若是你配置的編譯器在其它編譯器下邊,記得必定要點Up按鈕,把它排到第一位,不然C代碼的編譯晚於Java代碼的編譯,會形成你的C代碼要編譯兩次才能看到最新的修改

七、  這一路下來確定很累了吧,如今再次恭喜你,編譯配置也配置完成啦,如今來測試一下是否能夠自動編譯呢,打開項目jni目錄裏的hello-jni.c文件把提示Hello from JNI!改爲其餘的文字:如:Hello,My name is alex.,而後再模擬器中運行你的程序,若是模擬器中顯示了你最新修改的文字,那麼Congratulations!你已經所有配置成功啦!

相關文章
相關標籤/搜索