導航:首頁 > 操作系統 > 安卓ndk開發什麼

安卓ndk開發什麼

發布時間:2022-12-18 19:33:29

android ndk與sdk

1. SDK

Android SDK(Android Software Development Kit),即Android軟體開發工具包,Android的SDK基於java實現,這意味著基於Android SDK進行開發的第三方應用都必須使用Java語言。但這並不等同於「第三方應用只能使用Java」,也就是說我們還可以採用C/C++語言。

2. NDK

NDK即Native Development Kit,眾所周知,Android程序運行在Dalvik虛擬機中,NDK允許用戶使用類似C / C++之類的原生代碼語言執行部分程序。

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)。

為什麼使用NDK

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

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

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

(4)便於移植。用C/C++寫得庫可以方便在其他的嵌入式平台上再次使用。

⑵ 使用ndk開發程序需要寫什麼文件

NDK(Native Development Kit)「原生」也就是二進制
AndroidNDK是一套工具,允許Android應用開發者嵌入從C、C++源代碼文件編譯來的本地機器代碼到各自的應用軟體包中,並通過JNI進行訪問。Android從1.5開始支持NDK.

android常用的開發方式是java封裝的庫,而這些庫的底層實現是由C/C++實現,如媒體,圖形庫等
java調用這樣實現就需要用JNI(Java Native Interface)
平時用的也就是google給我們封裝的好的庫,即便是底層實現用的不是Java,但都有統一的Java介面
而NDK的作用是「我們自己寫本地代碼」(C/C++),自己用JNI封裝成Java介面
比如我們想做個計算,二這不是Java的強項,可以用C/C++來寫實現,返回一個運算結果就行了
NDKr5已經實現了不用寫一行Java代碼開發程序了,只不過還是用到了虛擬機,細節被封裝隱藏起來了而已
對於JNI和NDK很多Android開發初學者沒有搞明白這個問題
JNI是Java調用Native機制,是Java語言自己的特性全稱為 Java Native Interface,類似的還有微軟.Net Framework上的p/invoke,可以讓C#或Visual Basic.Net可以調用C/C++的API,所以說JNI和Android沒有關系,在PC上開發Java的應用,如果運行在Windows平台使用 JNI是是經常的,比如說讀寫Windows的注冊表。
NDK是Google公司推出的幫助Android開發者通過C/C++本地語言編寫應用的開發包,包含了C/C++的頭文件、庫文件、說明文檔和示例 代碼,我們可以理解為Windows Platform SDK一樣,是純C/C++編寫的,但是Android並不支持純C/C++編寫的應用,同時NDK提供的庫和函數功能很有限,僅僅處理些演算法效率敏感的 問題,所以Android123推薦初學者學好Java後再學習JNI。
NDK其實多了一個把.so和.apk打包的工具,這個是很重要的。
而JNI開發並沒有打包,只是把.so文件放到文件系統的特定位置。
如果是做應用開發,則需要NDK工具,不然你開發的應用程序怎麼給用戶用呢?難道幫他重新編譯文件系統?
其他至於實現,java調用本地C/C++函數,及其編寫方式,我覺得JNI和NDK沒有什麼區別。
還有一個我個人理解,NDK開發C/C++只能能使用NDK自帶的有限的頭文件,而使用JNI則可以使用文件系統中帶的頭文件,比如utils/Log.h
而後者的資源更多,當然NDK正在努力開發中,以便支持更豐富的介面。
2.開發環境搭建:
NDK開發需要安裝以下物體:
1.cygwin (需要1.7以上版本,下載地址:http://www.cygwin.com官方明確表示MSys or Cygwin 1.5 is notsupported)
在安裝時候,選擇make、gcc、g++、bash、

安裝好後啟動cygwin,運行:
看到如下所11示就ok了 (注意:GNU Make要 3.81以上版本)
3.NDK的使用
(android-ndk-r8b-windows),此文檔只針對r8b版進行說明, ndk可以到官方網http://developer.android.com上進行下載
Ndk下載下來隨意解壓到一個目錄即可(ndk的解壓後存放的路徑必須不能包括空格或中文,比如這種「D:\Program Files\Android-ndk-windows」在cygwin是不能識別成功的。)
如:D:\AndroidDevelop\NDK\android-ndk-r8b
配置NDK 在D:\AndroidDevelop\cygwin\home 目錄下找到.bash_profile打開文件加上:
NDK=/cygdrive/d/AndroidDevelop/NDK/android-ndk-r8b
export NDK
配好後重新打開cygwin
輸入:
cd $NDK
輸入: $NKD/ndk-build 驗證NDK是否可以使用?

在Cygwin下用nano或者vim編輯器編輯你的腳本。對於那些已經存在的腳本用dos2unix轉化一下。因為Windows下的換行是<LF><CR>,linux下是<LF>,Mac下是<CR>。
先對你的腳本跑一下 dos2unix .bash_profile 就行了。
配置NDK可以參照 http://www.linuxidc.com/Linux/2012-07/65388.htm

⑶ 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平台的一系列原生系統頭文件和庫。

(3)安卓ndk開發什麼擴展閱讀:

NDK的產品優勢:

1、NDK擁有培育人工水晶的豐富經驗。而好的人工水晶決定了優質晶振產品的一半的品質。

2、NDK晶振產品尺寸、規格全面,既可滿足中小型、超小型電子元器件的要求,也適用於各類規格要求的細分市場。

3、NDK晶體諧振器、晶體振盪器具有非常優越的頻率一致性和穩定性。特別在汽車電子市場,即使在嚴峻的寬溫(-40度到150度)和震動撞擊環境下,都能保持良好的穩定性。

參考資料來源:網路:NDK

⑷ 安卓sdk和ndk都是什麼有什麼區別哪個更有前途

讓我先來說說android sdk (Android Software Development Kit, 即Android軟體開發工具包)可以說只要你使用java去開發Android這個東西就必須用到。他包含了SDK Manager 和 AVD Manage
對於android系統的一些開發版本的管理以及模擬器管理。
而ndk (Native Development Kit)跟sdk差不多的是他也是一個開發工具包。用他開發c/c++是很方便的。他有一個強大的編譯集合。
其實名詞的解釋我也不想多說。這點你只需要網路分別輸入sdk 和 ndk 網路里就有你想要的。
區別是什麼我只想說是他們基本上是應該沒什麼相同的。
至於哪個更有前途。
這個不好說。
我來說說android他為什麼會有一個ndk把。
很早以前android是只有sdk的。並沒有ndk。這就意味著一旦android的開發者要使用c/c++的三方庫或者需要用到c/c++就必須使用非官方的法子。用java的jni去調用c/c++。耍小聰明走後門一樣。而ndk的出現就意味著jni調用的這種方法轉正了變成官方了以後你不需要再走後面大路正面隨你走。
可是這樣還是沒有說到為什麼要有ndk啊。是的我只想說的就是如果你要操作底層直接操作內存。操作地址那你不得不去使用c/c++因為java這塊想做這些。那恐怕有點困難。所以ndk是必須需要出現的。
而這個sdk和ndk並不是完全不相溶的2門語言。對於android來說是同種語言的2種不同時期的必須品。
最後想說如果你做android開發想要做得更好你就必須要ndk的。
一句套話:學得好什麼都有前途、

⑸ Android NDK到底能做哪些有趣的事情

NDK全稱Native Development Kit,因而NDK本身主要是一套工具鏈。NDK裡麵包含了交叉編譯、鏈接、調試等的工具,以及一些比較基本的函數庫,如STL、標准C庫等,一些圖形的glue介面等,還有JNI的一些機制。

感覺題主所稱的NDK在實際的NDK之外,似乎還包含JNI機制和C/C++編程語言。
JNI是一種讓Java層代碼和C/C++層代碼可以相互調用的機制,也就是Java層代碼可以調用C/C++,反過來也可以。不僅僅是Android開發可以用JNI這種機制,普通的PC機上的JAVA開發也可以用這種機制。
在Android app開發中使用C/C++語言,如同其他朋友所言,能帶來的好處很多,如利用遺留的相關庫,訪問底層操作系統介面等等。C/C++是這種開發中的核心。
至於說到有沒有必要,當然是具體看情況了。如果Android的Java層開發的知識的積累還非常少,當然應該先積累這方面的東西。對於許多對性能要求比較苛刻的應用領域,如其他朋友提到的音視頻編解碼,還有游戲的圖形什麼的使用NDK寫一些C/C++代碼可能比較好。要看別人優秀的使用了JNI機制和C/C++的開源項目,學一下一定是很有幫助的。
學習方法嘛,主要是分成NDK工具、JNI和 C/C++編程語言3個部分來看。
C/C++編程語言,自不必多說,和常規的 C/C++編程語言又沒有什麼特別的地方,主要的差別可能也就在可用的函數庫等方面了。
JNI的話,有一份叫 《The Java Native Interface Programmer's Guide and Specification》的文檔非常好,比較清楚的講解了Java代碼如何與C/C++代碼相互訪問的方法。
至於NDK,可以參考NDK自帶的文檔,或者android aosp項目中來了解如何編寫Android.mk。 參考NDK自帶的文檔來了解如何編譯,鏈接,調試,如何編寫Application.mk,如何使用STL等。還可以搜一下如何把NDK集成進自己使用的IDE中,如Eclipse,Android Studio等等。

⑹ 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)。

⑺ 安卓的NDK和SDK是什麼

可以用NDK開發,但不會替代SDK,因為NDK開發難度非常發,NDK有個巨大的麻煩就是現在有x86晶元的android手機的,用NDK就會需要提供兩套APK,比較麻煩。Android平台的第三方應用程序均是依靠基於Java的Dalvik特製虛擬機進行開發的。原生SDK(NDK)的可以讓開發者更加直接的接觸Android系統資源,並使用傳統的C或C++語言編寫程序,並在程序封包文件(.apks)中直接嵌入原生庫文件。NDK主要用於一些具有大量邏輯計算和高性能的圖像渲染的工作,比如我們要開發款大型的3D游戲,那麼如果使用AndroidSDK通過Java來開發,速度和性能上很難滿足我們的要求,這是就可以使用NDK通過C\C++來開發原生的程序來處理這些渲染,可以極大的提高我們游戲的性能。所以我們很有必要對NDK進行學習。

閱讀全文

與安卓ndk開發什麼相關的資料

熱點內容
扣扣加密技巧 瀏覽:720
蘋果如何創建伺服器錯誤 瀏覽:495
軟考初級程序員大題分值 瀏覽:473
js壓縮視頻文件 瀏覽:578
linux如何通過命令創建文件 瀏覽:989
應用加密app還能訪問應用嘛 瀏覽:433
安卓怎麼用支付寶交違章罰款 瀏覽:665
php面向對象的程序設計 瀏覽:504
數據挖掘演算法書籍推薦 瀏覽:894
投訴聯通用什麼app 瀏覽:150
web伺服器變更ip地址 瀏覽:954
java正則表達式驗證郵箱 瀏覽:360
成熟商務男裝下載什麼軟體app 瀏覽:609
加密2h代表長度是多少厘米 瀏覽:23
拍賣程序員 瀏覽:103
電腦的圖片放在哪個文件夾 瀏覽:276
unsignedintjava 瀏覽:218
編譯器下載地址 瀏覽:43
什麼是面對對象編程 瀏覽:709
b站伺服器什麼時候恢復 瀏覽:722