當前位置:首頁 » 安卓系統 » android源碼ndk

android源碼ndk

發布時間: 2024-03-22 17:42:52

『壹』 Android各個版本的NDK官方下載鏈接

NDK官方網站:https://developer.android.google.cn/ndk/downloads/index.html?hl=zh-cn

Google Android NDK官網

ndk_r14b (March 2017)

Windows 32 位: android-ndk-r14b-windows-x86.zip

SHA1校驗:

Windows 64 位: android-ndk-r14b-windows-x86_64.zip

SHA1校驗:

Mac OS X: android-ndk-r14b-darwin-x86_64.zip

SHA1校驗:

linux 64 位 (x86): android-ndk-r14b-linux-x86_64.zip

SHA1校驗:

ndk_r13b (Oct 2016)

Windows 32-bit : android-ndk-r13b-windows-x86.zip

Windows 64-bit: android-ndk-r13b-windows-x86_64.zip

Mac OS X : android-ndk-r13b-darwin-x86_64.zip

Linux: android-ndk-r13b-linux-x86_64.zip

ndk_r13 (Sept 2016)

Windows 32-bit : https://dl.google.com/android/repository/android-ndk-r13-windows-x86.zip

Windows 64-bit : https://dl.google.com/android/repository/android-ndk-r13-windows-x86_64.zip

Mac OS X : https://dl.google.com/android/repository/android-ndk-r13-darwin-x86_64.zip

Linux : https://dl.google.com/android/repository/android-ndk-r13-linux-x86_64.zip

ndk_r12 (June 2016)

Windows 32-bit : http://dl.google.com/android/repository/android-ndk-r12b-windows-x86.zip

Windows 64-bit : http://dl.google.com/android/repository/android-ndk-r12b-windows-x86_64.zip

Mac OS X 64-bit : http://dl.google.com/android/repository/android-ndk-r12b-darwin-x86_64.zip

Linux 64-bit (x86) : http://dl.google.com/android/repository/android-ndk-r12b-linux-x86_64.zip

ndk_r11c (March 2016)

Windows 32-bit : http://dl.google.com/android/repository/android-ndk-r11c-windows-x86.zip

Windows 64-bit : http://dl.google.com/android/repository/android-ndk-r11c-windows-x86_64.zip

Mac OS X 64-bit : http://dl.google.com/android/repository/android-ndk-r11c-darwin-x86_64.zip

Linux 64-bit (x86) : http://dl.google.com/android/repository/android-ndk-r11c-linux-x86_64.zip

ndk_r11b (March 2016)

Windows 32-bit : http://dl.google.com/android/repository/android-ndk-r11b-windows-x86.zip

Windows 64-bit : http://dl.google.com/android/repository/android-ndk-r11b-windows-x86_64.zip

Mac OS X 64-bit : http://dl.google.com/android/repository/android-ndk-r11b-darwin-x86_64.zip

Linux 64-bit (x86) : http://dl.google.com/android/repository/android-ndk-r11b-linux-x86_64.zip

ndk_r11 (March 2016)

Windows 32-bit : http://dl.google.com/android/repository/android-ndk-r11-windows-x86.zip

Windows 64-bit : http://dl.google.com/android/repository/android-ndk-r11-windows-x86_64.zip

Mac OS X 64-bit : http://dl.google.com/android/repository/android-ndk-r11-darwin-x86_64.zip

Linux 64-bit (x86) : http://dl.google.com/android/repository/android-ndk-r11-linux-x86_64.zip

ndk_r10e(Jan 2015)

Windows32-bit : http://dl.google.com/android/ndk/android-ndk-r10e-windows-x86.exe

Windows64-bit : http://dl.google.com/android/ndk/android-ndk-r10e-windows-x86_64.exe

MacOS X 64-bit : http://dl.google.com/android/ndk/android-ndk-r10e-darwin-x86_64.bin

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r10e-darwin-x86.bin

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r10e-linux-x86.bin

Linux64-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r10e-linux-x86_64.bin

ndk_r10d(December 2014)

Windows32-bit : http://dl.google.com/android/ndk/android-ndk-r10d-windows-x86.exe

Windows64-bit : http://dl.google.com/android/ndk/android-ndk-r10d-windows-x86_64.exe

MacOS X 64-bit : http://dl.google.com/android/ndk/android-ndk-r10d-darwin-x86_64.bin

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r10d-darwin-x86.bin

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r10d-linux-x86.bin

Linux64-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r10d-linux-x86_64.bin

ndk_r10c(October2014)

Windows32-bit : http://dl.google.com/android/ndk/android-ndk-r10c-windows-x86.exe

Windows64-bit : http://dl.google.com/android/ndk/android-ndk-r10c-windows-x86_64.exe

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r10c-darwin-x86.bin

MacOS X 64-bit : http://dl.google.com/android/ndk/android-ndk-r10c-darwin-x86_64.bin

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r10c-linux-x86.bin

Linux64-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r10c-linux-x86_64.bin

ndk_r10b(September2014)

Windows32-bit : http://dl.google.com/android/ndk/android-ndk32-r10b-windows-x86.zip

Windows64-bit : http://dl.google.com/android/ndk/android-ndk32-r10b-windows-x86_64.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk32-r10b-darwin-x86.tar.bz2

MacOS X 64-bit : http://dl.google.com/android/ndk/android-ndk32-r10b-darwin-x86_64.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk32-r10b-linux-x86.tar.bz2

Linux64-bit (x86) : http://dl.google.com/android/ndk/android-ndk32-r10b-linux-x86_64.tar.bz2

ndk_r10(July2014)

Windows32-bit : http://dl.google.com/android/ndk/android-ndk32-r10-windows-x86.zip

Windows64-bit : http://dl.google.com/android/ndk/android-ndk32-r10-windows-x86_64.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk32-r10-darwin-x86.tar.bz2

MacOS X 64-bit : http://dl.google.com/android/ndk/android-ndk32-r10-darwin-x86_64.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk32-r10-linux-x86.tar.bz2

Linux64-bit (x86) : http://dl.google.com/android/ndk/android-ndk32-r10-linux-x86_64.tar.bz2

ndk_r9d(March2014)

Windows32-bit : http://dl.google.com/android/ndk/android-ndk-r9d-windows-x86.zip

Windows64-bit : http://dl.google.com/android/ndk/android-ndk-r9d-windows-x86_64.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r9d-darwin-x86.tar.bz2

MacOS X 64-bit : http://dl.google.com/android/ndk/android-ndk-r9d-darwin-x86_64.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r9d-linux-x86.tar.bz2

Linux64-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r9d-linux-x86_64.tar.bz2

ndk_r9c(December2013)

Windows32-bit : http://dl.google.com/android/ndk/android-ndk-r9c-windows-x86.zip

Windows64-bit : http://dl.google.com/android/ndk/android-ndk-r9c-windows-x86_64.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r9c-darwin-x86.tar.bz2

MacOS X 64-bit : http://dl.google.com/android/ndk/android-ndk-r9c-darwin-x86_64.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r9c-linux-x86.tar.bz2

Linux64-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r9c-linux-x86_64.tar.bz2

ndk_r9b(October 2013)

Windows32-bit : http://dl.google.com/android/ndk/android-ndk-r9b-windows-x86.zip

Windows64-bit : http://dl.google.com/android/ndk/android-ndk-r9b-windows-x86_64.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r9b-darwin-x86.tar.bz2

MacOS X 64-bit : http://dl.google.com/android/ndk/android-ndk-r9b-darwin-x86_64.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r9b-linux-x86.tar.bz2

Linux64-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r9b-linux-x86_64.tar.bz2

ndk_r9(July 2013)

Windows32-bit : http://dl.google.com/android/ndk/android-ndk-r9-windows-x86.zip

Windows64-bit : http://dl.google.com/android/ndk/android-ndk-r9-windows-x86_64.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r9-darwin-x86.tar.bz2

MacOS X 64-bit : http://dl.google.com/android/ndk/android-ndk-r9-darwin-x86_64.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r9-linux-x86.tar.bz2

Linux64-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r9-linux-x86_64.tar.bz2

ndk_r8e(March 2013)

Windows32-bit : http://dl.google.com/android/ndk/android-ndk-r8e-windows-x86.zip

Windows64-bit : http://dl.google.com/android/ndk/android-ndk-r8e-windows-x86_64.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r8e-darwin-x86.tar.bz2

MacOS X 64-bit : http://dl.google.com/android/ndk/android-ndk-r8e-darwin-x86_64.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r8e-linux-x86.tar.bz2

Linux64-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r8e-linux-x86_64.tar.bz2

Note :

NDKr8e is the first NDK with 32bit and 64bit releases. The prior ones were all32bit and didn』t have any suffix, so r8b would be:

ndk_r8d(December 2012)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r8d-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r8d-darwin-x86.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r8d-linux-x86.tar.bz2

ndk_r8C(November 2012)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r8C-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r8C-darwin-x86.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r8C-linux-x86.tar.bz2

ndk_r8b(July 2012)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r8b-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r8b-darwin-x86.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r8b-linux-x86.tar.bz2

ndk_r8(May 2012)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r8-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r8-darwin-x86.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r8-linux-x86.tar.bz2

ndk_r7c(April 2012)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r7c-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r7c-darwin-x86.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r7c-linux-x86.tar.bz2

ndk_r7b(February 2012)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r7b-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r7b-darwin-x86.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r7b-linux-x86.tar.bz2

ndk_r7(November 2011)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r7-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r7-darwin-x86.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r7-linux-x86.tar.bz2

ndk_r6b(August 2011)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r6b-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r6b-darwin-x86.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r6b-linux-x86.tar.bz2

ndk_r6(July 2011)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r6-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r6-darwin-x86.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r6-linux-x86.tar.bz2

ndk_r5c(June 2011)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r5c-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r5c-darwin-x86.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2

ndk_r5b(January 2011)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r5b-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r5b-darwin-x86.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r5b-linux-x86.tar.bz2

ndk_r5(December 2010)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r5-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r5-darwin-x86.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r5-linux-x86.tar.bz2

ndk_r4b(June 2010)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r4b-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r4b-darwin-x86.zip

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r4b-linux-x86.zip

ndk_r4(may 2010)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r4-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r4-darwin-x86.zip

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r4-linux-x86.zip

ndk_r3(March 2010)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r3-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r3-darwin-x86.zip

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r3-linux-x86.zip

『貳』 vlc android源碼導入android studio還需要ndk編譯

ndk編譯是針對jni的。jni是java native interface的縮寫,意為java本地介面。
java本地介面一般是用c語言來實現一些功能,然後通過特定的格式暴露介面給java調用。但是C語言的代碼不能直接被java使用,而是需要通過ndk進行編譯,編譯後會在libs目錄下生成.so文件,這事動態運行庫,這時C語言曝露出的介面才能被java調用。

樓主可以檢查你的vlc項目中的libs目錄下,是否包含了.so文件,如果有的話一般是不需要ndk進行 編譯的。不過如果樓主修改了c語言中的代碼,那麼為了使修改生效必須從新用ndk編譯,編譯後會刪除原來生成的.so,並生成新的.so文件。

使用ndk-r7以及更高版本的ndk,可以免安裝cygwin而直接使用命令行進行編譯,非常方便。
方法:
將ndk的根目錄設置環境變數,然後dos命令行進入需要編譯的項目的根目錄,執行命令

ndk-build

『叄』 ANDROID NDK開發求助

一、NDK產生的背景

Android平台從誕生起,就已經支持C、C++開發。眾所周知,Android的SDK基於Java實現,這意味著基於Android SDK進行開發的第三方應用都必須使用Java語言。但這並不等同於「第三方應用只能使用Java」。在Android SDK首次發布時,Google就宣稱其虛擬機Dalvik支持JNI編程方式,也就是第三方應用完全可以通過JNI調用自己的C動態庫,即在Android平台上,「Java+C」的編程方式是一直都可以實現的。

不過,Google也表示,使用原生SDK編程相比Dalvik虛擬機也有一些劣勢,Android SDK文檔里,找不到任何JNI方面的幫助。即使第三方應用開發者使用JNI完成了自己的C動態鏈接庫(so)開發,但是so如何和應用程序一起打包成apk並發布?這裡面也存在技術障礙。比如程序更加復雜,兼容性難以保障,無法訪問Framework
API,Debug難度更大等。開發者需要自行斟酌使用。

於是NDK就應運而生了。NDK全稱是Native Development Kit。

NDK的發布,使「Java+C」的開發方式終於轉正,成為官方支持的開發方式。NDK將是Android平台支持C開發的開端。二、為什麼使用NDK

1.代碼的保護。由於apk的java層代碼很容易被反編譯,而C/C++庫反匯難度較大。

2.可以方便地使用現存的開源庫。大部分現存的開源庫都是用C/C++代碼編寫的。

3.提高程序的執行效率。將要求高性能的應用邏輯使用C開發,從而提高應用程序的執行效率。

4.便於移植。用C/C++寫得庫可以方便在其他的嵌入式平台上再次使用。三、NDK簡介

1.NDK是一系列工具的集合

NDK提供了一系列的工具,幫助開發者快速開發C(或C++)的動態庫,並能自動將so和java應用一起打包成apk。這些工具對開發者的幫助是巨大的。

NDK集成了交叉編譯器,並提供了相應的mk文件隔離CPU、平台、ABI等差異,開發人員只需要簡單修改mk文件(指出「哪些文件需要編譯」、「編譯特性要求」等),就可以創建出so。

NDK可以自動地將so和Java應用一起打包,極大地減輕了開發人員的打包工作。

2.NDK提供了一份穩定、功能有限的API頭文件聲明

Google明確聲明該API是穩定的,在後續所有版本中都穩定支持當前發布的API。從該版本的NDK中看出,這些API支持的功能非常有限,包含有:C標准庫(libc)、標准數學庫(libm)、壓縮庫(libz)、Log庫(liblog)。四、NDK開發環境的搭建

1.下載安裝Android NDK

地址:http://developer.android.com/sdk/ndk/index.html

2.下載安裝cygwin

由於NDK編譯代碼時必須要用到make和gcc,所以你必須先搭建一個linux環境, cygwin是一個在windows平台上運行的unix模擬環境,它對於學習unix/linux操作環境,或者從unix到windows的應用程序移植,非常有用。通過它,你就可以在不安裝linux的情況下使用NDK來編譯C、C++代碼了。下載地址:http://www.cygwin.com

1)然後雙擊運行吧,運行後你將看到安裝向導界面。

2)點擊下一步,此時讓你選擇安裝方式:

Install from
Internet:直接從Internet上下載並立即安裝(安裝完成後,下載好的安裝文件並不會被刪除,而是仍然被保留,以便下次再安裝)。

Download Without Installing:只是將安裝文件下載到本地,但暫時不安裝。

Install from Local Directory:不下載安裝文件,直接從本地某個含有安裝文件的目錄進行安裝。

3)選擇第一項,然後點擊下一步。

4)選擇要安裝的目錄,注意,最好不要放到有中文和空格的目錄里,似乎會造成安裝出問題,其它選項不用變,之後點下一步:

5)上一步是選擇安裝cygwin的目錄,這個是選擇你下載的安裝包所在的目錄,默認是你運行setup.exe的目錄,直接點下一步就可以:

6)此時你共有三種連接方式選擇:

Direct Connection:直接連接。

Use IE5 Settings:使用IE的連接參數設置進行連接。

Use HTTP/FTP Proxy:使用HTTP或FTP代理伺服器進行連接(需要輸入伺服器地址、埠號)。

用戶可根據自己的網路連接的實情情況進行選擇,一般正常情況下,均選擇第一種,也就是直接連接方式。然後再點擊「下一步」。

7)這是選擇要下載的站點,選擇後點下一步。

8)此時會下載載入安裝包列表

9)Search是可以輸入你要下載的包的名稱,能夠快速篩選出你要下載的包。那四個單選按鈕是選擇下邊樹的樣式,默認就行,不用動。View默認是Category,建議改成full顯示全部包再查,省的一些包被隱藏掉。左下角那個復選框是是否隱藏過期包,默認打鉤,不用管它就行,下邊開始下載我們要安裝的包吧,為了避免全部下載,這里列出了後面開發NDK用得著的包:autoconf2.1、automake1.10、binutils、gcc-core、gcc-
g++、gcc4-core、gcc4-g++、gdb、pcre、pcre-devel、gawk、make共12個包

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

11)下面測試一下cygwin是不是已經安裝好了。

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

然後依次輸入gcc –version,g++ --version,make –version,gdb
–version進行測試,如果都列印出版本信息和一些描述信息,則cygwin安裝成功!

3.配置 NDK 環境變數

a.首先找到 cygwin 的安裝目錄,找到一個 home\< 你的用戶名 >\.bash_profile 文件,我的是:E:\cygwin\home\Administrator\.bash_profile , ( 注意:我安裝的時候我的 home 文件夾下面什麼都沒有,解決
的辦法:首先打開環境變數,把裡面的用戶變數中的 HOME 變數刪掉,在 E:\cygwin\home 文件夾下建立名為Administrator 的文件夾(是用戶名),然後把 E:\cygwin\etc\skel\.bash_profile 拷貝到該文件夾下 ) 。

b.打開 bash_profile 文件,添加 NDK=/cygdrive/< 你的盤符 >/<android
ndk 目錄 > 例如:

NDK=/cygdrive/e/android-ndk-r5

export NDK

NDK 這個名字是隨便取的,為了方面以後使用方便,選個簡短的名字,然後保存

c.打開 cygwin ,輸入 cd
$NDK ,如果輸出上面配置的 /cygdrive/e/android-ndk-r5 信息,則表明環境變數設置成功了。4.用 NDK 來編譯程序

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

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

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

d.此時去 hello-jni 的 libs 目錄下看有沒有生成的 .so 文件,如果有,你的 ndk 就運行正常啦!5.在 eclipse 中集成 c/c++ 開發環境

a.裝 Eclipse 的 C/C++ 環境插件: CDT ,這里選擇在線安裝。首先登錄 http://www.eclipse.org/cdt/downloads.php ,找到對應你 Eclipse 版本的 CDT 插件 的在線安裝地址。

b.然後點 Help 菜單,找到 Install New Software 菜單

c.點擊 Add 按鈕,把取的地址填進去,出來插件列表後,選 Select All ,然後選擇下一步即可完成安裝。

d.安裝完成後,在 eclispe 中右擊新建一個項目,如果出現了 c/c++ 項目,則表明你的 CDT 插件安裝成功啦!

『肆』 如何從零開始創建Android NDK應用

本文主內容:
1、 Android NDK 安裝
2、 安裝Cygwin與使用NDK編譯
3、 在Eclipse中集成C/C++開發環境CDT
4、 安裝Sequoyah插件
5、 JNI編譯環境配置

本文建立在已經完成Android開發環境搭建的基礎上。其基礎環境至少需要包含以下內容:
1、 JDK
2、 Eclipse
3、 Android SDK and ADT
可以參考我之前的「Android開發環境搭建」。
一、Android NDK 安裝與配置
下載Android NDK。下載地址:http://developer.android.com/tools/sdk/ndk/index.html
下載後解壓縮到你的工作目錄,例如:D:\Java\android-ndk-r8,結果如下圖:

注意:samples下麵包含幾個實例開發演示項目,第一次接觸NDK開發,建議先從示例開始。
docs內是技術文檔,英語能力強的可以研究研究。
二、安裝Cygwin與使用NDK編譯
由於NDK開發大都涉及到C/C++在GCC環境下編譯、運行,所以在Windows環境下,需要用Cygwin模擬Linux編譯環境。
下載:
Cygwin的下載地址:http://www.cygwin.com/

點擊右上角的「setup.exe」即可下載。
安裝:
第一步:運行setup.exe程序,直接點擊Next進入下一步。
第二步:選擇安裝方式。第一次可以採用Direct Connection在線下載安裝,如有現成的離線包,可以選擇離線安裝(Install from Local Directory)。
第三步:選擇安裝目錄。比如D:\Java\Cygwin,注意此目錄是指Cygwin最終的安裝目錄,不是下載文件螞皮數暫存目錄。
第四步:設置本地包暫存路徑。暫存目錄默認是放到setup.exe的同級目錄下,建議放到指定的文件夾,如D:\Cygwin_install_file。安裝完成後把這個文件夾打包備份,以後再配置時不用重新下載。
第五步:設置網路連接方式。這個目前河蟹沒爬過來,選第一個即可。
第六步:選悶首擇下載站點地址。據說國內163站點的速度不錯,我也是用的這個。
第七步:等待載入安裝項載入,選擇安裝項。點擊Devel-Default,使之變成Devel-Install,展開後可以看到其下的子項被選中了(網上多數教程都說選中某12個包,找起來太坑爹了,直接全下載了吧,全選多了150M左右)。此界面其他設置都不用動。

第八步:等待下載完成。下載完成時間決定於你選擇的安裝包數量及網路連接速度,安裝我安裝的版本,約983M,下載完成後會自動握亂安裝到上文設置的安裝目錄,安裝也要時間的,總時間較長,去吃個飯沒啥問題。
提醒:第四步的備份建議,盡量去做。如果有備份,第二步中選擇離線安裝。
驗證:
運行安裝目錄下的「Cygwin.bat」,第一次運行時,它會自動創建用戶信息,用戶信息存放在「.\Cygwin\home」中。
在運行「Cygwin.bat」打開的命令行窗口輸入:「cygcheck -c cygwin」命令,會列印出當前Cygwin的版本和運行狀態,如果status是ok的話,則cygwin運行正常。
分別輸入:「make –v」和,「gcc –v」命令如果檢測成功,會有make和gcc相關版本信息列印出來。

設置NDK路徑:
在windows的系統環境變數中添加NDK的路徑。使用「/cygdrive/d/Java/android-ndk-r8」這種Linux風格路徑,如果使用Windows下的「D:\Java\android-ndk-r8」,Cygwin在編譯時會發出警告。

運行Cygwin命令行,可以直接使用此環境變數,當然也可以手動的cd到該目錄:

使用NDK編譯程序:
現在我們用安裝好的NDK來編譯一個NDK提供的sample程序hello-jni(我的目錄位於:D:\Java\android-ndk-r8\samples\hello-jni)。
第一步:運行Cygwin,配置環境變數後可輸入「cd $ndk/samples/hello-jni/」,未配置則輸入命令「cd /cygdrive/d/java/android-ndk-r8/samples/hello-jni」,進入到「hello-jni」工程目錄。

第二步:編譯。輸入命令「$ndk/ndk-build」命令即可編譯。ndk-build是調用ndk的編譯程序。
關於下面的錯誤,我沒遇到,但是前人有總結,記錄如下:
錯誤:Android NDK: Host 'awk' tool is outdated。
解決方法:打開目錄「D:\Java\android-ndk-r8\prebuilt\windows\bin\」,刪除awk.exe(為保險起見請先備份)。

第三步:到」…/hello-jni/libs/armeabi「目錄下看有沒有生成的.so文件,如果有,你的ndk就運行正常啦!

導入NDK的hello-jni示例到Eclipse中:
第一步:在Eclipse中新建一個Android工程HelloJni。在Create Android Project時勾選「Create project from existing source」,Location中填「D:\Java\android-ndk-r8\samples\hello-jni」 (注意:在選擇API level時需要選擇1.5或更高的版本)。
第二步:直接以Android Aplication運行。這里要注意,你之前在使用NDK編譯程序時要把這個hello-jni編譯過並產生了.so文件,此處才能運行起來。

三、在Eclipse中集成C/C++開發環境CDT
CDT的安裝可以使我們在一個工程中,同時開發基於C/C++的Native代碼和基於Java語言的殼,之後的配置還可以使得一次編譯兩部分代碼。
下載:
下載地址:http://www.eclipse.org/cdt/downloads.php
說明:
Eclipse C/C++ IDE Indigo SR2:是帶CDT的Eclipse開發環境。
p2 software repository:在線安裝的地址。(似乎被河蟹爬了)
cdt-master-8.0.2.zip:這個是CDT的離線安裝包。(推薦使用這個,保留離線包,復用)

離線安裝:
Eclipse -> Help -> Install New Software,點擊add。Name:隨意,建議使用好記的「CDT_版本」。Location:點擊Archive,定位到下載的「cdt-master-8.0.2.zip」文件。
錯誤:
如果Location的下面出現「Duplicate location」錯誤,請到Window -> preferences -> Install/Update -> Avaliable Software Site中找到該條,remove之。
驗證:
安裝完成後,在Eclispe中新建一個項目,如果出現了C/C++項目,則表明CDT插件安裝成功了。

四、安裝Sequoyah插件
Sequoyah插件用於設置Android工程對Native開發的支持。
官方網址:http://www.eclipse.org/sequoyah/downloads/
在線安裝:
官網提供了用於在線安裝的Update Site地址以及安裝包的下載地址。貌似安裝包才1M多,在線安裝也沒被河蟹爬過,直接在線安裝了。勾選全部列出的可安裝項並完成安裝。
Location:http://download.eclipse.org/sequoyah/updates/2.0/

注意:
在安裝界面不要勾選「Group items by category」復選框,默認是勾選的,出現了列表為空(There are no categorized items)的情況。

配置:
安裝完Sequoyah插件後,為Android配置NDK路徑。
在「window –> preferences ->Android -> 本機開發」中添加NDK的路徑。

驗證:
右鍵之前建立的「HelloJni」項目,在「Android Tools」選項中包含「Add Native Support…」選項即成功。
五、JNI編譯環境配置
仍舊以之前建立的「HelloJni」為例,到目前為止,如果我們修改「/HelloJni/jni/hello-jni.c」文件,動態鏈接庫libhello-jni.so文件卻不會被重新編譯生成。這是因為我們沒有給JNI項目添加它需要的編譯配置和依賴庫。現在我們來配置它。
第一步:轉換工程。點擊「文件 -> 新建 -> 其他」(快捷鍵:Ctrl+N)。選擇「C/C++」下的「Convert to a C/C++ Project(Adds C/C++ Nature)」。進入「下一步」。

第二步:選中你剛才建的「HelloJni」工程,下面左邊選「Makefile project」右邊選「Cygwin GCC」。確定後提示的「透視圖」不清楚是什麼,點擊「是」即可。

第三步:在「HelloJni」工程上右鍵,選擇「屬性」。配置「C/C++ Build」和「C/C++ General -> Paths and Symbols」。
C/C++ Build:點擊「C/C++ Build」,在右邊的「Builder Settings」中去掉默認勾選的「Use default build command」復選框。設置Build command為「bash D:\Java\android-ndk-r8\ndk-build」。

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

驗證:
將「/HelloJni/jni/hello-jni.c」中的字元串「Hello from JNI !」如改為「Hello JNI from Baron!」,運行後在模擬器上輸出的字元串改變即說明配置成功。

『伍』 Android用NDK和整套源碼下編譯JNI的不同

2. 注冊函數的方法是不同的。舉例說,在com/evan129/jnitest/jniutils.java有個native int foo()方法,需要在jni中實現
在ndk中,只要實現這個函數,然後函數名是以jint java_com_evan129_jnitest_jniutils_foo(jnienv* env, jobject thiz) 命名既可。也就是說,如果jni只要實現這個函數,並且功能也很簡單的話,那麼jni c/cpp文件里只需要這一個函數就完事了。
但在android源碼中編譯jni代碼是不同的,jni中的函數名無所謂。不過至少還需要加一個
jniexport jint jnicall jni_onload(javavm* vm, void* reserved)方法,這個方法可以找個現有的復制一把就行,檢查運行環境的。然後主要是這個方法中會調用(*env).registernatives函數,在這里把jni中的方法和java文件中的方法關聯起來。
3. 有個很詭異的區別,自動傳入的jnienv* env好像不是一個東西。因為在android源碼中使用這個env一般是如env->newstringutf(…),而ndk中sample里的一處是(*env)->newstringutf(…) 這env和*env差很大。但兩處函數傳入的都是jnienv* env,只能懷疑jnienv的定義是不是都是不同的。

熱點內容
linux的系統函數 發布:2024-11-28 02:39:52 瀏覽:294
pm編程卡 發布:2024-11-28 02:39:50 瀏覽:563
convertsql 發布:2024-11-28 02:39:50 瀏覽:386
phpwap源碼 發布:2024-11-28 02:36:46 瀏覽:586
狂牛加密視頻破解 發布:2024-11-28 02:32:54 瀏覽:867
騰訊視頻上傳技巧 發布:2024-11-28 02:28:05 瀏覽:238
2016資料庫系統工程師 發布:2024-11-28 02:22:16 瀏覽:891
壓縮機飛動 發布:2024-11-28 02:00:04 瀏覽:273
50年腳本 發布:2024-11-28 01:58:38 瀏覽:220
光遇渠道服初音腳本怎麼換號 發布:2024-11-28 01:57:44 瀏覽:416