1. 程式人生 > >Android NDK開發(一)——環境搭建

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環境下,cygwinwindows下模擬linux的一個工具。Cygwin雙擊安裝,也可以從CSDN資源頁上下載我上傳的資料包,裡面包含cygwin的安裝程式和安裝包,地址是:http://download.csdn.net/detail/lee_tianya/8235323



        選擇安裝方式請注意了,一般可以選擇從Internet上線上安裝,不過速度很慢,而且中途不能斷開,如果網速不好中途斷開了,那麼就必須從頭開始下載,非常不舒服。第二種方式是本地安裝,先下載好安裝所需要的檔案放在本地磁碟上,然後選擇安裝目錄即可,我這裡是本地安裝。
選擇安裝目錄的時候請注意:安裝目錄不可以出現空格,最好不要出現中文等非英文字元。



安裝完畢後 ,桌面會出現一個快捷圖示,雙擊快捷小圖示,開啟cygwin。

首先程式會初始化


敲入命令

Make –v


顯示出來 GNU Make 的版本 ,說明我們的cygwin模擬的linux編譯環境 模擬成功了.

3,安裝NDK


        我這裡選用的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開發,後續的文章會慢慢介紹。