『壹』 android ndk是什麼
android是安卓的縮寫,NDK是日本電波工業株式會社的英文縮寫,Android NDK 是在SDK前面又加上了「原生」二字,即Native Development Kit,因此又被Google稱為「NDK」。
Android程序運行在Dalvik虛擬機中,NDK允許用戶使用類似C / C++之類鄭拍的原生代碼語言執行部分程序。NDK包括以下方面:
1、從C / C++生成原生代知啟碼庫所需要的工具和build files。
2、將一致的原生庫嵌入可以在Android設備上部署的應用程序包文件(application packages files ,即.apk文件)中。
3、支持所有未來Android平台的一系列原生系統頭文件和庫。
(1)androidndkr9c擴展閱讀:
NDK的產品優勢:
1、搭叢如NDK擁有培育人工水晶的豐富經驗。而好的人工水晶決定了優質晶振產品的一半的品質。
2、NDK晶振產品尺寸、規格全面,既可滿足中小型、超小型電子元器件的要求,也適用於各類規格要求的細分市場。
3、NDK晶體諧振器、晶體振盪器具有非常優越的頻率一致性和穩定性。特別在汽車電子市場,即使在嚴峻的寬溫(-40度到150度)和震動撞擊環境下,都能保持良好的穩定性。
參考資料來源:網路:NDK
『貳』 解壓完android-ndk-r9c後怎樣安裝,還有用不用在安裝SDK
android-ndk-r9c解壓後在配置一個環境變數ANDROID_NDK_ROOT,解壓ndk的目錄,之後就可以直接用來開發動態庫文件,也就是後綴名是.so文件。ndk只是用來編寫 動態庫文件的,如果不想寫apk就不需要sdk。y
SDK是用來開發手機apk的,是集成了很多的類庫。
『叄』 android ndk r8b和r9c有啥區別
1、增加C++11標准
2、增加opengl es 3.0
3、增加了語音文字轉換
4、解決 r8 兩次編譯的問題
等一系列的功能,當然上面的幾個是主要的,
當然現在最新的版本是ndk r10c,
如果要更新的話,建議直接更新到 r10c,
希望對你有用,我是ndk吧吧主,有問題可以ndk吧留言,謝謝!
『肆』 如何學好android 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
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 插件安裝成功啦!
6.配置 C/C++ 的編譯器
a.打開 eclipse ,導入ndk 自帶的hello-jni 例子,右鍵單擊項目名稱,點擊 Properties ,彈出配置界面,之後再點擊 Builders ,彈出項目的編譯工具列表,之後點擊 New,新添加一個編譯器,點擊後出現添加界面,選擇 Program ,點擊 OK。
b.出現了添加界面,首先給編譯配置起個名字,如: C_Builder,設置 Location 為 < 你 cygwin 安裝路徑 >\bin\bash.exe 程序,例:E:\cygwin\bin\bash.exe ,設置Working Directory為<你 cygwin 安裝路徑 >\bin 目錄,例如: E:\cygwin\bin,設置 Arguments 為 --login -c "cd /cygdrive/e/android-ndk-r5/samples/hello-jni && $NDK /ndk-build"
上面的配置中 /cygdrive/e/android-ndk-r5/samples/hello-jni 是你當前要編譯的程序的目錄, $NDK 是之前配置 的 ndk 的環境變數,這兩個根據你具體的安裝目錄進行配置,其他的不用變, Arguments 這串參數實際是 給 bash.exe 命令行程序傳參數,進入要編譯的程序目錄,然後運行 ndk-build 編譯程序
c.接著切換到 Refresh 選項卡,給 Refresh resources upon completion 打上鉤
d.然後切換到 Build Options 選項卡,勾選上最後三項
e.之後點擊 Specify Resources 按鈕,選擇資源目錄,勾選你的項目目錄即可
f.最後點擊 Finish,點擊 OK 一路把剛才的配置都保存下來,注意:如果你配置的編譯器在其它編譯器下邊,記得一定要點 Up 按鈕,把它排到第一位,否則 C 代碼的編譯晚於Java代碼的編譯,會造成你的 C 代碼要編譯兩次才能看到最新的修改。
g.編譯配置也配置完成啦,現在來測試一下是否可以自動編譯呢,打開項目 jni 目錄里的 hello-jni.c 文件把提示 Hello from JNI! 改成其他的文字:如: Hello , My name is alex. ,然後再模 擬器中運行你的程序,如果模擬器中顯示了你最新修改的文字,那麼 Congratulations !你已經全部配置成功啦!
『伍』 Android NDK 歷史版本下載地址
https://dl.google.com/android/repository/android-ndk-r20-windows-x86_64.zip
https://dl.google.com/android/repository/android-ndk-r19c-windows-x86_64.zip
https://dl.google.com/android/repository/android-ndk-r18b-windows-x86_64.zip
https://dl.google.com/android/repository/android-ndk-r17c-windows-x86_64.zip
https://dl.google.com/android/repository/android-ndk-r16b-windows-x86_64.zip
https://dl.google.com/android/repository/android-ndk-r15c-windows-x86_64.zip
https://dl.google.com/android/repository/android-ndk-r14b-windows-x86_64.zip
https://dl.google.com/android/repository/android-ndk-r13b-windows-x86_64.zip
https://dl.google.com/android/repository/android-ndk-r12b-windows-x86_64.zip
https://dl.google.com/android/repository/android-ndk-r11c-windows-x86_64.zip
https://dl.google.com/android/repository/android-ndk-r10e-windows-x86_64.zip
https://dl.google.com/android/repository/android-ndk-r19c-darwin-x86_64.zip
https://dl.google.com/android/repository/android-ndk-r18b-darwin-x86_64.zip
https://dl.google.com/android/repository/android-ndk-r17c-darwin-x86_64.zip
https://dl.google.com/android/repository/android-ndk-r16b-darwin-x86_64.zip
https://dl.google.com/android/repository/android-ndk-r15c-darwin-x86_64.zip
https://dl.google.com/android/repository/android-ndk-r14b-darwin-x86_64.zip
https://dl.google.com/android/repository/android-ndk-r13b-darwin-x86_64.zip
https://dl.google.com/android/repository/android-ndk-r12b-darwin-x86_64.zip
https://dl.google.com/android/repository/android-ndk-r11c-darwin-x86_64.zip
https://dl.google.com/android/repository/android-ndk-r10e-darwin-x86_64.zip
『陸』 android ndk到底是什麼
NDK是一系列工具的集合。它提供了一系列的工具,幫助開發者快速開發C(或C++)的動態庫,並能自動將so和java應用一起打包成apk(AndroidPackage的縮寫,Android安裝包)。這些工具對開發者的幫助是巨大的。它集成了交叉編譯器,並提供了相應的mk文件隔離CPU、平台、ABI等差異,開發人員只需要簡單修改mk文件(指出「哪些文件需要編譯」、「編譯特性要求」等),就可以創建出so。它可以自動地將so和Java應用一起打包,極大地減輕了開發人員的打包工作。
NDK提供了一份穩定、功能有限的API頭文件聲明,Google明確聲明該API是穩定的,在後續所有版本中都穩定支持當前發布的API。從該版本的NDK中看出,這些API支持的功能非常有限,包含有:C標准庫(libc)、標准數學庫(libm)、壓縮庫(libz)、Log庫(liblog)。
『柒』 Android NDK Jni 開發C和C++的區別
NDK是谷歌開發的一用於Android開發調用C語言的工具,而JNI是Java調用C語言的協議,橋梁。 谷歌在Android2.3版本變開發出NDK供開發者使用,開發者使用它可以很方便的調用C代碼,而代碼書寫規范需要遵循JNI協議進行定義。 JNI一開始是為了本地已編譯語言,尤其是C和C++而設計的,但是它並不妨礙你使用其他語言,只要調用約定受支持就可以了。使用java與本地已編譯的代碼交互,通常會喪失平台可移植性。但是,有些情況下這樣做是可以接受的,甚至是必須的,比如,使用一些舊的庫,與硬體、操作系統進行交互,或者為了提高程序的性能。