android 最新 NDK r8 在window下開發環境搭建 安裝配置與使用 詳細圖文講解,完整實際配置過程記錄(原創)一直想搞NDK開發卻一直給其他事情耽擱了,參考了些網上的資料今天終於把環境搭建起來了,把過程記錄下來分享給大家。內容目錄:1.預設基礎環境2.NDK下載與配置3.安裝Cygwin4.用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:http://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:http://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檔案才能運行起來。 五、匯入靜態目標庫到Android項目
編譯完成後會得到*.so靜態目標庫後,就可以匯入工程環境Eclipse Android項目中使用,注意,NDK編程並非一定要把這個目標庫匯入Android項目使用,除了本步驟描述的使用方法之外,還有Android源碼直接修改、編譯,然後燒錄到測試機的開發方式,那樣可以實現應用程式預設安裝、許可權開機提升等等更“徹底”的功能。綜合一下:
本步驟示範屬於NDK目標庫+Andriod APK樣式,此外還有Android源碼直接開發、直接編譯方式(確切一點已經淡化Android所謂的工程概念了,當然源碼開發目前似乎還無法直接在Windows下進行,好像必須使用Linux家族系統進行,天緣稍後文章會有所涉及)
使用方法如下(樣本):
1、在Eclipse中建立一個工程HelloJni,HelloJni.java中的代碼可參考NDK對應 sample下的示範代碼(android-ndk-r8b\samples\hello-jni\tests\src\com\example \HelloJniTest)調用方法。
2、將NDK編譯項目目錄下的jni和libs檔案夾拷貝到建立工程目錄下
注意這兩個檔案夾要和工程中的src和res檔案在同一目錄下。然後進入Eclipse中重新整理工程(會看到多出兩個檔案夾)。
3、運行Eclipse項目,就可以在虛擬機器上看到hello-jni.c函數中輸出字串。
4、後續您可以試著修改庫來源程式或項目JAVA程式來熟悉NDK整個開發過程。
六、在Eclipse中整合C/C++開發環境CDTCDT外掛程式可以在一個工程中同時開發基於C/C++的Native代碼和基於Java的代碼,加上Sequoyah外掛程式可以一次編譯兩部分代碼。:http://www.eclipse.org/cdt/downloads.php不同eclipse版本要下載對應的包,否則安裝不了。Help-->About Eclipse 下可以看到自己用的版本,我的是 Version: Helios Service Release 2 即Helios版本http://www.eclipse.org/downloads/download.php?file=/tools/cdt/releases/helios/dist/cdt-master-7.0.2.zipcdt-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開發的支援。官方網址:http://www.eclipse.org/sequoyah/downloads/開啟上面網址就可以看到具體的安裝說明了Location:http://download.eclipse.org/sequoyah/updates/2.0/ For Helios SR2 Sequoyah version: http://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!”即說明配置成功。
7.ndk r8 支援android - 8 以及以上的版本
到現在你可以在一個工程中同時開發基於C/C++的Native代碼和基於Java的代碼,開發NDK應用和開發普通android應用感覺不到什麼差別了。
歡迎大家評論討論,如有不清楚的可以在評論裡面提出來,將會更新補充清楚,已經補充了部分cygwin安裝過程的和注意事項。
有空再整理一篇用NDK移植ffmpeg的文章。
http://www.cnblogs.com/zdz8207/archive/2012/11/27/android-ndk-install.html