Android NDK開發(一)——環境搭建
Android下的NDK開發是Android開發中不可或缺的一部分,通過Google提供的NDK套件,我們可以使用JNI這座橋樑在Java和C/C++之間建立聯絡(互相調用)。那麼,為什麼在Android開發中需要瞭解NDK開發呢?誠然,這些原因有很多說法,在我總結來是這樣的。C/C++是比Java還要古老的程式設計語言,由於其古老的特性,導致早期有很多優秀的類庫出現,譬如處理視頻編解碼的FFMPEG類庫,這些複雜的類庫早就被C/C++編寫過,我們在處理視頻編解碼的時候沒必要重複“造輪子”,所以能直接拿來用的就直接拿來用,但是這個直接法很難做到,因為Java的編譯環境的原理跟C/C++的不同,所以就必須找個中間者為Java和C/C++代碼建立關係,這個中間者就是JNI。還有一個重要的原因就是效率問題,Java是跨平台的語言,在不同的平台有不同的JVM實現,Java源碼需要首先編譯成.class檔案,然後讓.class檔案運行在不同的JVM解釋執行上,這樣的步驟造成了效率的浪費,而不同的是C/C++,可以直接編譯成特定平台的二進位檔案,直接運行在特定平台上,效率比Java高效很多,所以在某些特定的環境下,還是需要使用C/C++來解決效率問題,Java只負責處理C/C++返回來的結果就可以,這樣的話Java和C/C++互調就顯得相當重要了。
做NDK開發前最好需要瞭解一下C/C++的文法,通常這部分的代碼不需要Android程式員編寫,但是Android程式員最好能看懂C/C++源碼,這樣做會事半功倍一點,關於C/C++文法的學習不是這裡的重點,大家感興趣的話可以直接找資料學習,請從櫃底抽出大學教材《C語言程式設計——譚浩強》,拍拍上面的灰塵,隨便過一遍^.^
一、明確一些基本概念1,JNI
Java Native Interface Java 本地開發的介面。JNI 是一個協議,這個協議用來溝通java代碼和外部的本地代碼(c/c++)。通過這個協議,java代碼就可以調用外部的c/c++代碼,外部的c/c++代碼也可以調用java代碼。
2,CDT
C/C++ Develop tools,C/C++開發工具。是Eclipse上的一個外掛程式,主要是讓C/C++代碼能夠高亮顯示。這個組件不是必要的,除非你是C/C++高手,喜歡在記事本上寫代碼,對於一般的程式員還是裝一下吧,高亮顯示很重要的。
3,NDK
Native Develop Kits,本地開發套件。這個套件是非常重要的,是Google提供給我們的一個在Android上開發JNI程式的工具集,有了它會使得開發高效的多。
4,cygwin
Windows下的Linux模擬器。大家知道Android是基於Linux核心的作業系統,所以在編譯C/C++源碼的使用得使用Linux環境,將其編譯成Linux特定平台的檔案.so或者.a。好訊息是,NDK高版本中提供了Windows下開發套件的支援,cygwin可以不使用,直接在Windows下平台編譯也是可行的,但是為了顯示學習,最好還是需要瞭解一點的。
二、NDK環境搭建1,安裝CDT如果是使用的是從Android Develop官網上下載的整合了ADT一整套的IDE的話,請跳過這一步,因為ADT中已經整合好了CDT外掛程式,直接使用就可以了。如果使用的是傳統的Eclipse自裝外掛程式的方式的話,有兩種方式可供安裝CDT。 (1)下載CDT外掛程式進行安裝。在Eclipse社區官網可以找到下載連結https://eclipse.org/cdt/。 (2)線上安裝。步驟如下: 開啟Eclipse工具列Help-->install new software
選擇 Helios- http://download.eclipse.org/release/helios ,等待展開,選擇Programing language
選擇c/c++ 開發工具
一路next下去,同意licenses。
安裝成功會提示是不是確認重啟eclipse,重啟就完成安裝。
2,安裝cygwin
NDK需要運行在linux環境下,cygwin是windows下類比linux的一個工具。Cygwin是一個程式,支援很多外掛程式。可以去cygwin的官網上下載http://www.cygwin.com/雙擊安裝,也可以從CSDN資源頁上下載我上傳的資料包,裡麵包含cygwin的安裝程式和安裝包,地址是:http://download.csdn.net/detail/lee_tianya/8235323
選擇安裝方式請注意了,一般可以選擇從Internet上線上安裝,不過速度很慢,而且中途不能斷開,如果網速不好中途斷開了,那麼就必須從頭開始下載,非常不舒服。第二種方式是本地安裝,先下載好安裝所需要的檔案放在本地磁碟上,然後選擇安裝目錄即可,我這裡是本地安裝。
選擇安裝目錄的時候請注意:安裝目錄不可以出現空格,最好不要出現中文等非英文字元。
安裝完畢後 ,案頭會出現一個快捷表徵圖,雙擊快捷小表徵圖,開啟cygwin。
首先程式會初始化
敲入命令
Make –v
顯示出來 GNU Make 的版本 ,說明我們的cygwin類比的linux編譯環境 類比成功了.
3,安裝NDK
首先翻牆上Google Android Develop的官網去下載NDK,地址是http://developer.android.com/tools/sdk/ndk/index.html
我這裡選用的Windows版本64位的r10d版本的ndk,是當前最新版本,android-ndk-r10d-windows-x86_64.exe,下載完成後點擊exe檔案,會自定解壓到目前的目錄下,這個過程比較漫長,可見升級造成安裝的過大啊,好,解壓完畢之後我移動E:/NDK目錄下了。
做完上面的一些步驟後,環境基本上是搭建完成了,現在我們使用cygwin類比Linux環境下,進入Windows路徑E:/NDK/android-ndk-r10d下,執行ndk-build指令碼。
第一步:進入根目錄找到根目錄下的cygdrive檔案,該檔案對應的是Windows下的所有盤符:
第二步:進入ndk所在目錄:
第三步:執行ndk-build指令碼
通過上面的步驟,我們就可以使用ndk-build指令碼了,但是這樣的過程是在是太繁瑣了,使用起來是非常的不方便,那麼下面我們來使用一下簡便的方法吧,設定檔。
為了方便直接在命令列裡面使用ndk-build,需要給cygwin的環境變數裡面添加ndk的目錄
首先
我們在cygwin安裝的目錄下找到etc/profile檔案,這個檔案就是cygwin的設定檔,用記事本開啟這個檔案,找到如下一行:
然後
我們在cygwin的控制台上找到ndk的解壓路徑
接下來
我們複製這個路徑到Path中,注意Linux環境變數中的路徑分割使用英文冒號“:”來區分
最後 檢測是否配置完成,在cygwin控制台下輸入“ndk-build”命令 若命令列顯示的是如所示的資訊,說明配置完成了,可以使用了,若不是這種情況,請根據文章的描述再進行一次配置。
好了,NDK開發中的環境搭建到此就結束了,下面就可以使用NDK環境來開發了,關於NDK開發,後續的文章會慢慢介紹。