Android NDK r8 Cygwin CDT 在window下開發環境搭建 安裝配置與使用 詳細圖文講解
android 最新 NDK r8 在window下開發環境搭建 安裝配置與使用 詳細圖文講解,完整實際配置過程記錄(原創)
一直想搞NDK開發卻一直給其他事情耽擱了,參考了些網上的資料今天終於把環境搭建起來了,把過程記錄下來分享給大家。
內容目錄:
1.默認基礎環境
2.NDK下載與配置
3.安裝Cygwin
4.用NDK編譯
5.安裝CDT插件
6.安裝Sequoyah插件
7.JNI編譯環境配置
畫了一個思維導圖讓大家一目了然配置過程
-----------------------------------------------
一、默認基礎環境為已經完成Android開發環境的搭建
本人的環境是 jdk1.6.0_07 、Eclipse3.6(Helios)、Android SDK 、 ADT 可以正常開發android應用。
要先創建android虛擬機,能夠跑一個android應用起來再跑ndk的
二、Android NDK 下載與配置
下載Android NDK:https://developer.android.com/tools/sdk/ndk/index.html
最近google的網站打開都很慢 有時候還可能打不開,需要有點耐心。
選擇Windowsandroid-ndk-r8c-windows.zip233787657 bytes (104MB)
下載後解壓縮到你的工作目錄,例如:E:\android\android-ndk-r8,
samples文件夾下麵包含12個實例開發演示項目,是學習的好資源。
三、安裝Cygwin
C/C++的編譯環境需要Linux的gcc,所以在Windows環境下用Cygwin來模擬Linux
下載地址:https://cygwin.com/install.html
隨便點擊一個 setup.exe 的連接即可下載,這個隻是個下載的引導程序,實際內容到下一步才下載,有0.97GB需要的時間比較長的。
1.運行setup.exe程序,直接點擊Next進入下一步。
2.選擇安裝方式。第一次可以采用Direct Connection在線下載安裝,如有現成的離線包,可以選擇離線安裝(Install from Local Directory)。
3.選擇安裝目錄。比如D:\Cygwin,注意此目錄是指Cygwin這個虛擬機的安裝目錄,不是下載文件暫存目錄,也不是NDK的目錄。
4.設置本地包暫存路徑。暫存目錄默認是放到setup.exe的同級目錄下 我的是http%3a%2f%2fmirrors.163.com%2fcygwin%2f,可以備份下來。
注:第一次安裝會彈出個警告框,不要管他,點擊確認就可以了。
5.設置網絡連接方式。選第一個即可。
6.選擇下載站點地址,直接選第一個163的站點就可以了,這個我下載的速度最高可以達到185k。
7.出現加載安裝項後,點擊Devel-Default,變成Devel-Install,其他設置都不用動,下一步下載。
8.等待下載完成,大約需要一個小時左右。下載完成後再點擊下一步安裝,安裝也需要很長時間。
9.運行安裝目錄(D:\Cygwin)下的“Cygwin.bat”,輸入:“cygcheck -c cygwin”命令,會打印出當前Cygwin的版本和運行狀態,如果status是ok的話,則cygwin運行正常。
10.輸入:“make –v”和,“gcc –v”命令如果檢測成功,會有make和gcc相關版本信息打印出來。

11.設置NDK路徑,在windows的係統環境變量中添加NDK的路徑。
使用“/cygdrive/e/android/android-ndk-r8”這種Linux風格路徑,如果使用Windows下的“E:\android\android-ndk-r8”,Cygwin在編譯時會發出警告。

12.運行Cygwin命令行,可以直接使用$ndk環境變量,不用每次都手動輸入目錄

四、使用NDK編譯程序:
1)編譯NDK提供的sample程序hello-jni(E:\android\android-ndk-r8\samples\hello-jni)。
1.運行Cygwin,輸入“cd $ndk/samples/hello-jni/”,進入到“hello-jni”工程目錄。
2.輸入“$ndk/ndk-build”編譯。ndk-build是調用ndk的編譯程序。
3.用ls命令查看libs/armeabi/下是否生成了so文件,有libhello-jni.so說明ndk運行正常。
$ ls libs/armeabi/
gdb.setup gdbserver libhello-jni.so
也可以到E:\android\android-ndk-r8\samples\hello-jni\libs\armeabi目錄下看有沒有生成的.so文件。
2)導入NDK的hello-jni示例到Eclipse中
1.在Eclipse中新建一個Android工程HelloJni。
在Create Android Project時勾選“Create project from existing source”,Location中填E:\android\android-ndk-r8\samples\hello-jni
2.直接以Android Aplication運行com.example.hellojni.HelloJni項目。要先有.so文件才能運行起來。

五、在Eclipse中集成C/C++開發環境CDT
CDT插件可以在一個工程中同時開發基於C/C++的Native代碼和基於Java的代碼,加上Sequoyah插件可以一次編譯兩部分代碼。
下載地址:https://www.eclipse.org/cdt/downloads.php
不同eclipse版本要下載對應的包,否則安裝不了。
Help-->About Eclipse 下可以看到自己用的版本,我的是 Version: Helios Service Release 2 即Helios版本
https://www.eclipse.org/downloads/download.php?file=/tools/cdt/releases/helios/dist/cdt-master-7.0.2.zip
cdt-master-7.0.2.zip:這個是CDT的離線安裝包。(由於文件比較大推薦使用離線包,7.0.2的54.8M,8.1.1的103MB)
安裝:Eclipse -> Help -> Install New Software,點擊add。
Name:CDT_版本。
Location:點擊Archive,定位到下載的“cdt-master-7.0.2.zip”文件。
如果Location的下麵出現“Duplicate location”錯誤,請到Window -> preferences -> Install/Update -> Avaliable Software Site中找到remove掉。
如果出現缺少eclipse包說明你下載的版本和eclipse版本不匹配,重新下載匹配的重新安裝就可以了。
另外需要重啟eclipse後才生效。
安裝完成重啟後,在Eclispe中新建一個項目,如果出現了C/C++項目,則表明CDT插件安裝成功了。

六、安裝Sequoyah插件(必須先安裝CDT之後才能安裝這個,可以直接安裝最新版2.0的)
Sequoyah插件用於設置Android工程對Native開發的支持。
官方網址:https://www.eclipse.org/sequoyah/downloads/
打開上麵網址就可以看到具體的安裝說明了
Location:https://download.eclipse.org/sequoyah/updates/2.0/
For Helios SR2 Sequoyah version: https://download.eclipse.org/sequoyah/updates/1.0.2/
注:隻是安裝1.0.2的沒有出來“本機開發”的配置所以沒法用,本人重新安裝了2.0的可以了,這個應該直接安裝最新版2.0的就可以了。
在安裝界麵不要勾選“Group items by category”複選框,選中出現了列表為空(There are no categorized items)的情況。
在“window –> preferences ->Android -> 本機開發”中添加NDK的路徑。
這個插件安裝後也需要重啟eclipse的
重啟後右鍵之前建立的“HelloJni”項目,在“Android Tools”選項中包含“Add Native Support…”選項即成功。

七、JNI編譯環境配置
現在修改“/HelloJni/jni/hello-jni.c”文件,動態鏈接庫libhello-jni.so文件不會被重新編譯生成。
需要給JNI項目添加編譯配置和依賴庫後才行。
1.轉換工程:新建項目,選擇“C/C++”下的“Convert to a C/C++ Project(Adds C/C++ Nature)”。進入“下一步”。
2.選中你剛才建的“HelloJni”工程,下麵左邊選“Makefile project”右邊選“Cygwin GCC”,點擊Finish創建項目。

3.在“HelloJni”工程上右鍵,選擇“屬性”。配置“C/C++ Build”:點擊“C/C++ Build”,在右邊的“Builder Settings”中去掉默認勾選的“Use default build command”複選框。
設置Build command為“bash E:\android\android-ndk-r8\ndk-build”。

4.配置依賴庫:C/C++ General -> Paths and Symbols:在Includes下add新的GNU,C依賴路徑。
“HelloJni”工程需要“E:\android\android-ndk-r8\platforms\android-8\arch-arm\usr\include”即可,以後根據不同項目選擇不同的依賴庫。

5.將“/HelloJni/jni/hello-jni.c”中的字符串“Hello from JNI !”,改為“Hello JNI from ZDZ!”
6.運行後在模擬器上輸出的字符串為“Hello JNI from ZDZ!”即說明配置成功。

到現在你可以在一個工程中同時開發基於C/C++的Native代碼和基於Java的代碼,開發NDK應用和開發普通android應用感覺不到什麼差別了。
歡迎大家評論討論,如有不清楚的可以在評論裏麵提出來,將會更新補充清楚,已經補充了部分cygwin安裝過程的截圖和注意事項。
有空再整理一篇用NDK移植ffmpeg的文章。
最後更新:2017-04-03 07:57:10