Android NDK學習 簡介

Android NDK( Native Developer Kit )是個工具集,它提供一套方法,使Android應用程序(Java程序)可以內嵌native(C,C++)程序。

Android應用程序(Java程序)運行於Dalvik虛擬機中。NDK允許應用程序的一部分使用native語言(C,C++)來實現。這對很多程序都是有幫助的,比如需要利用以前完成的C,C++代碼,也可以提高運行速度。

NDK提供以下:
1. 一組工具和編譯文件,用來將C/C++代碼生成Native庫。
2. 將Native庫嵌入應用程序包(APK)的方法。
3. 一組Native系統頭文件和庫。它們支持所有未來Android版本(從Android1.5開始)。但應用程序使用Native Activity則必須在Android2.3或更高版本使用。(因爲android.app.NativeActivity從API 9纔有)
4. 文檔,例子和指南。

最近的NDK(NDK R7C)支持的指令集如下:
1.  ARMv5TE (including Thumb-1 instructions)
2.    
ARMv7-A (including Thumb-2 and VFPv3-D16 instructions, with optional support for NEON/VFPv3-D32 instructions)
3.   
 x86 instructions (see CPU-ARCH-ABIS.HTML for more information) 

ARMv5TE(包括Thumb-1)與ARMv7-A的主要區別是:ARMv7-A支持硬件VFP,
 Thumb-2 ,Neon指令。

可以編譯爲任意一種或者兩者的指令集,
 缺省編譯爲ARMv5TE指令。但轉換爲 ARMv7-A 也是很容易的(Application.mk 中修改即可)。也可以在同一時刻編譯爲雙指令集。( CPU-ARCH-ABIS.HTML in the NDK package 中下一步察看)

NDK提供libc(C庫),libm(數學庫), 3D graphics 庫的穩定頭文件等。

NDK的成分如下:
NDK包含APIs,文檔,例子程序等。

Developer Tools包含如下:
1.交叉編譯器,可以在Linux,Windows,MacOS下產生 native ARM二進制文件。
2.一組系統頭文件
  • libc (C library) headers
  • libm (math library) headers
  • JNI interface headers
  • libz (Zlib compression) headers
  • liblog (Android logging) header
  • OpenGL ES 1.1 and OpenGL ES 2.0 (3D graphics libraries) headers
  • libjnigraphics (Pixel buffer access) header (for Android 2.2 and above).
  • A Minimal set of headers for C++ support
  • OpenSL ES native audio libraries
  • Android native application APIS

    NDK同時還提供一套編譯系統,以方便使用。可以不必瞭解Toolchain/CPU/Platform/ABI等細節,只是創建一個簡單的build 文件,指明哪個文件需要被編譯,以及哪個Android應用程序將要使用它,就可以編譯成功。
NDK無法產生最終的APK,只能產生被APK所使用的動態庫。(Sam:其實還可以產生native C可執行程序)

NDK需要GNU Make 3.81或者以上版本(make -v可以看到)。

另外:Android1.5之後,Android 2.3之前的Android版本。使用C/C++代碼,只能用JNI方式,並使用NDK編譯。
但在Android2.3 之後,因爲有了 android.app.NativeActivity 。所以可以不再利用JNI方式由Java調用C/C++代碼編譯出的庫了。

注:一些Linux下單列出來的庫,被合併到C庫中了,例如libpthread.so. 被合併入libc.so

注意:此處NDK版本爲NDK R7C.


原文出處:http://blog.sina.com.cn/s/blog_602f8770010146tp.html

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