AndroidStudio 項目配NDK

Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google稱爲“NDK”。
衆所周知,Android程序運行在Dalvik虛擬機中,NDK允許用戶使用類似C / C++之類的原生代碼語言執行部分程序。
NDK包括了
  • 從C / C++生成原生代碼庫所需要的工具和build files。
  • 將一致的原生庫嵌入可以在Android設備上部署的應用程序包文件(application packages files ,即.apk文件)中。
  • 支持所有未來Android平臺的一系列原生系統頭文件和庫

閒話少說、打開AndroidStudio 右鍵項目 選擇 Open Module Settings



如果沒有 ndk build  點擊Download



完了就是這樣


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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章