AndroidNDK(NativeDeveloperKit)是个工具集,它提供一套方法,使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开始)。但应用程序使用NativeActivity则必须在Android2.3或更高版本使用。(因为android.app.NativeActivity从API9才有)
4.文档,例子和指南。

最近的NDK(NDKR7C)支持的指令集如下:
1.ARMv5TE(includingThumb-1instructions)
2.
ARMv7-A(includingThumb-2andVFPv3-D16instructions,withoptionalsupportforNEON/VFPv3-D32instructions)
3.
x86instructions(seeCPU-ARCH-ABIS.HTMLformoreinformation)

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

可以编译为任意一种或者两者的指令集,
缺省编译为ARMv5TE指令。但转换为ARMv7-A也是很容易的(Application.mk中修改即可)。也可以在同一时刻编译为双指令集。(CPU-ARCH-ABIS.HTMLintheNDKpackage中下一步察看)

NDK提供libc(C库),libm(数学库),3Dgraphics库的稳定头文件等。

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

DeveloperTools包含如下:
1.交叉编译器,可以在Linux,Windows,MacOS下产生nativeARM二进制文件。
2.一组系统头文件

  • libc(Clibrary)headers

  • libm(mathlibrary)headers

  • JNIinterfaceheaders

  • libz(Zlibcompression)headers

  • liblog(Androidlogging)header

  • OpenGLES1.1andOpenGLES2.0(3Dgraphicslibraries)headers

  • libjnigraphics(Pixelbufferaccess)header(forAndroid2.2andabove).

  • AMinimalsetofheadersforC++support

  • OpenSLESnativeaudiolibraries

  • AndroidnativeapplicationAPIS

    NDK同时还提供一套编译系统,以方便使用。可以不必了解Toolchain/CPU/Platform/ABI等细节,只是创建一个简单的build文件,指明哪个文件需要被编译,以及哪个Android应用程序将要使用它,就可以编译成功。

NDK无法产生最终的APK,只能产生被APK所使用的动态库。(其实还可以产生nativeC可执行程序)

NDK需要GNUMake3.81或者以上版本(make-v可以看到)。


另外:Android1.5之后,Android2.3之前的Android版本。使用C/C++代码,只能用JNI方式,并使用NDK编译。
但在Android2.3之后,因为有了android.app.NativeActivity。所以可以不再利用JNI方式由Java调用C/C++代码编译出的库了。


注:一些Linux下单列出来的库,被合并到C库中了,例如libpthread.so.被合并入libc.so

更多相关文章

  1. AIDL --- Android中的远程接口(3)
  2. Android(安卓)Camera 使用小结
  3. Android设计原则/Android(安卓)Design Principles
  4. Android中shape使用
  5. Android(安卓)file类使用详解-SDcard
  6. Android:AsyncTask使用
  7. Android入门教程五十五之DrawerLayout(官方侧滑菜单)的简单使用
  8. 为Android加入busybox工具
  9. Android(安卓)NDK初识

随机推荐

  1. Android(安卓)图片加载Bitmap OOM错误解
  2. android与H5混合开发
  3. android之单元测试――上
  4. [置顶] Unity与Android交互-android的安
  5. Android(安卓)Makefile分析
  6. 浙大网新仿真实训android培训好不好
  7. 献给android原生应用层开发初学者技术架
  8. Android优缺点
  9. 学生怎么入门Android?这四点很重要!
  10. Android撬动IT市场的新支点