我的位置: 首頁(yè) > 學(xué)習(xí)專(zhuān)區(qū) > 安卓技術(shù) > 談?wù)勀銓?duì)NDK的認(rèn)識(shí)

談?wù)勀銓?duì)NDK的認(rèn)識(shí)

2012-01-28 10:59:00
來(lái)源:
[導(dǎo)讀] 1、前言6月 26 日, Google Android 發(fā)布了 NDK ,引起了很多發(fā)人員的興趣。 NDK 全稱(chēng): Native Development Kit 。下載地址

1、前言

6月 26 日, Google Android 發(fā)布了 NDK ,引起了很多發(fā)人員的興趣。 NDK 全稱(chēng): Native Development Kit 。下載地址為: http://developer.android.com/sdk/ndk/1.5_r1/index.html 。

2、誤解

新出生的事物,除了驚喜外,也會(huì)給我們帶來(lái)一定的迷惑、誤解。

2.1、誤解一: NDK 發(fā)布之前, Android 不支持進(jìn)行 C 開(kāi)發(fā)

在Google 中搜索 “NDK” ,很多 “Android 終于可以使用 C++ 開(kāi)發(fā) ” 之類(lèi)的標(biāo)題,這是一種對(duì) Android 平臺(tái)編程方式的誤解。其實(shí), Android 平臺(tái)從誕生起,就已經(jīng)支持 C 、 C++ 開(kāi)發(fā)。眾所周知, Android 的 SDK 基于 Java 實(shí)現(xiàn),這意味著基于 Android SDK 進(jìn)行開(kāi)發(fā)的第三方應(yīng)用都必須使用 Java 語(yǔ)言。但這并不等同于 “ 第三方應(yīng)用只能使用 Java” 。在 Android SDK 首次發(fā)布時(shí), Google 就宣稱(chēng)其虛擬機(jī) Dalvik 支持 JNI 編程方式,也就是第三方應(yīng)用完全可以通過(guò) JNI 調(diào)用自己的 C 動(dòng)態(tài)庫(kù),即在 Android 平臺(tái)上, “Java+C” 的編程方式是一直都可以實(shí)現(xiàn)的。

當(dāng)然這種誤解的產(chǎn)生是有根源的:在Android SDK 文檔里,找不到任何 JNI 方面的幫助。即使第三方應(yīng)用開(kāi)發(fā)者使用 JNI 完成了自己的 C 動(dòng)態(tài)鏈接庫(kù)( so )開(kāi)發(fā),但是 so 如何和應(yīng)用程序一起打包成 apk 并發(fā)布?這里面也存在技術(shù)障礙。我曾經(jīng)花了不少時(shí)間,安裝交叉編譯器創(chuàng)建 so ,并通過(guò) asset (資源)方式,實(shí)現(xiàn)捆綁 so 發(fā)布。但這種方式只能屬于取巧的方式,并非官方支持。所以,在 NDK 出來(lái)之前,我們將 “Java+C” 的開(kāi)發(fā)模式稱(chēng)之為灰色模式,即官方既不聲明 “ 支持這種方式 ” ,也不聲明 “ 不支持這種方式 ” 。

2.2、誤解二:有了 NDK ,我們可以使用純 C 開(kāi)發(fā) Android 應(yīng)用

Android SDK采用 Java 語(yǔ)言發(fā)布,把眾多的 C 開(kāi)發(fā)人員排除在第三方應(yīng)用開(kāi)發(fā)外( 注意:我們所有討論都是基于“ 第三方應(yīng)用開(kāi)發(fā) ” , Android 系統(tǒng)基于 Linux ,系統(tǒng)級(jí)別的開(kāi)發(fā)肯定是支持 C 語(yǔ)言的。 )。NDK 的發(fā)布,許多人會(huì)誤以為,類(lèi)似于 Symbian 、 WM ,在 Android 平臺(tái)上終于可以使用純 C 、 C++ 開(kāi)發(fā)第三方應(yīng)用了!其實(shí)不然, NDK 文檔明確說(shuō)明: it is not a good way 。因?yàn)?NDK 并沒(méi)有提供各種系統(tǒng)事件處理支持,也沒(méi)有提供應(yīng)用程序生命周期維護(hù)。此外,在本次發(fā)布的 NDK 中,應(yīng)用程序 UI 方面的 API 也沒(méi)有提供。至少目前來(lái)說(shuō),使用純 C 、 C++ 開(kāi)發(fā)一個(gè)完整應(yīng)用的條件還不完備。

3、NDK 是什么

對(duì)NDK 進(jìn)行了粗略的研究后,我對(duì) “NDK 是什么 ” 的理解如下:

1、NDK 是一系列工具的集合。

NDK提供了一系列的工具,幫助開(kāi)發(fā)者快速開(kāi)發(fā) C (或 C++ )的動(dòng)態(tài)庫(kù),并能自動(dòng)將 so 和 java 應(yīng)用一起打包成 apk 。這些工具對(duì)開(kāi)發(fā)者的幫助是巨大的。

NDK集成了交叉編譯器,并提供了相應(yīng)的 mk 文件隔離 CPU 、平臺(tái)、 ABI 等差異,開(kāi)發(fā)人員只需要簡(jiǎn)單修改 mk 文件(指出 “ 哪些文件需要編譯 ” 、 “ 編譯特性要求 ” 等),就可以創(chuàng)建出 so 。

NDK可以自動(dòng)地將 so 和 Java 應(yīng)用一起打包,極大地減輕了開(kāi)發(fā)人員的打包工作。

2、NDK 提供了一份穩(wěn)定、功能有限的 API 頭文件聲明。

Google明確聲明該 API 是穩(wěn)定的,在后續(xù)所有版本中都穩(wěn)定支持當(dāng)前發(fā)布的 API 。從該版本的 NDK 中看出,這些 API 支持的功能非常有限,包含有: C 標(biāo)準(zhǔn)庫(kù)( libc )、標(biāo)準(zhǔn)數(shù)學(xué)庫(kù)( libm )、壓縮庫(kù)( libz )、 Log 庫(kù)( liblog )。

4、NDK 帶來(lái)什么

1、NDK 的發(fā)布,使 “Java+C” 的開(kāi)發(fā)方式終于轉(zhuǎn)正,成為官方支持的開(kāi)發(fā)方式。

使用NDK ,我們可以將要求高性能的應(yīng)用邏輯使用 C 開(kāi)發(fā),從而提高應(yīng)用程序的執(zhí)行效率。

使用NDK ,我們可以將需要保密的應(yīng)用邏輯使用 C 開(kāi)發(fā)。畢竟, Java 包都是可以反編譯的。

NDK促使專(zhuān)業(yè) so 組件商的出現(xiàn)。(樂(lè)觀猜想,要視乎 Android 用戶(hù)的數(shù)量)

2、NDK 將是 Android 平臺(tái)支持 C 開(kāi)發(fā)的開(kāi)端。

NDK提供了的開(kāi)發(fā)工具集合,使開(kāi)發(fā)人員可以便捷地開(kāi)發(fā)、發(fā)布 C 組件。同時(shí), Google承諾在 NDK 后續(xù)版本中提高 “ 可調(diào)式 ” 能力,即提供遠(yuǎn)程的 gdb 工具,使我們可以便捷地調(diào)試 C 源碼。在支持 Android 平臺(tái) C 開(kāi)發(fā),我們能感覺(jué)到 Google 花費(fèi)了很大精力,我們有理由憧憬 “C 組件支持 ” 只是 Google Android 平臺(tái)上C 開(kāi)發(fā)的開(kāi)端。畢竟, C 程序員仍然是碼農(nóng)陣營(yíng)中的絕對(duì)主力,將這部分人排除在 Android 應(yīng)用開(kāi)發(fā)之外,顯然是不利于 Android 平臺(tái)繁榮昌盛的。

評(píng)論
熱點(diǎn)專(zhuān)題
>>
相關(guān)文章推薦
>>
高中生學(xué)什么專(zhuān)業(yè)好找工作 北大青鳥(niǎo)開(kāi)學(xué)時(shí)間 北大青鳥(niǎo)紀(jì)錄片 翠竹北大青鳥(niǎo) 明日之星總決賽 高考落榜讀什么學(xué)校有好出路 2017專(zhuān)科錄取分?jǐn)?shù)線 現(xiàn)在什么專(zhuān)業(yè)就業(yè)前景好 200分能上什么學(xué)校 高考多少分能上專(zhuān)科學(xué)校 高中畢業(yè)后學(xué)什么好 高考沒(méi)被錄取怎么辦 校園形象代言人 北大青鳥(niǎo)學(xué)費(fèi)是多少 JAVA6 高考失利怎么辦 筍崗北大青鳥(niǎo) 華富北大青鳥(niǎo) 大合唱 明日之星節(jié)目 園嶺北大青鳥(niǎo) 北大青鳥(niǎo)什么時(shí)候開(kāi)學(xué) 現(xiàn)在什么專(zhuān)業(yè)好就業(yè) 深圳北大青鳥(niǎo)學(xué)校的學(xué)費(fèi)是多少 華南區(qū)就業(yè)示范班研討會(huì) 華南區(qū) 就業(yè)示范班研討會(huì) web前端 沙河北大青鳥(niǎo) 粵海北大青鳥(niǎo) 現(xiàn)在什么行業(yè)有前景 大學(xué)生找什么工作好 IT行業(yè)好不好 中國(guó)互聯(lián)網(wǎng)安全大會(huì) 網(wǎng)絡(luò)工程師發(fā)展前景怎么樣 第二屆“北大青鳥(niǎo)杯”超級(jí)演說(shuō)家 如何選擇專(zhuān)業(yè)的成人電腦培訓(xùn) 零基礎(chǔ)能學(xué)會(huì)IT技術(shù)嗎 女生適合學(xué)什么技術(shù) 女生現(xiàn)在學(xué)什么好 北大青鳥(niǎo)IT培訓(xùn) 大學(xué)生求職困難怎么辦 北大青鳥(niǎo)夢(mèng)想職通車(chē)招聘會(huì) 大學(xué)畢業(yè)生找工作難怎么辦 轉(zhuǎn)行學(xué)什么好
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
亚洲喷奶水中文字幕电影 | 日本韩国亚洲综合日韩欧美国产 | 日本国产欧美大码a蜜糖视频 | 亚洲成a人片在线观看国产 亚洲字字幕在线中文乱码 亚洲日韩中文在线精品第一 | 亚洲精品中文字幕久久 | 亚洲欧美不卡视频在线播放 |