NDK是一个工具集合,并允许你使用本地代码语言如C,C++ 来实现你应用的一部分。对于特定类型的应用,这是非常有用的,你可以重新使用存在的代码库,还可以增加执行度。
在下载NDK之前,你应该知道NDK不将会受益大部分程序。作为开发者,你需要权衡利益大于缺点。注意,在android上使用本地代码基本上不能导致显著的运行提高,但是它增加了你的应用的复杂度。大体上,如果对你的应用重要的话,你可以仅仅使用NDK---在你喜欢使用C/C++写程序。
对于NDK的典型好的候选是自我包含,增强CPU运作,使之分配少量的内存,比如信号处理,物理模拟等等。当检测到你是否应该使用本地代码开发,考虑你的需求并看是否Android 框架API提供你需要的功能。
版本:
Android NDK,Revision 8b当检测到你是否应该开发
这个版本的主要特性是新的GNU Compiler Collection(GCC)4.6工具链,还有GNU Debugger (GDB)7.3.x,这个版本添加了对Android4.1(API Level 16)系统镜像的调试支持。
重要的bug修补:
* 在Mac OS,Windows Cygwin 环境中修补了静态库的LOCAL_SHORT_COMMANDS问题。
系统和软件需求
下面的部分描述了使用Android NDK的系统和软件需求,还有平台兼容考虑,它影响使用NDK产出的库的应用。
Android SDK
* 要求完整的Android SDK安装(包括所有的依赖)。
* 要求Android 1.5 SDK或者以后的版本。
支持的操作系统
* Windows XP(32-bit ) or Vista (32-or 64-bit )
* Mac OS X 10.4.8 或者以后(仅x86)
* Linux (32 或者64位,Ubuntu8.04,或者使用GLibc2.7或者以后的linux 发布。
要求开发工具
* 对于所有的开发平台,要求GNU Make 3.81或者以后。GNU Make 早期版本可以工作,但是还没有测试。
* 要求awk( GNU Awk 或者 Nawk )的版本。
* 对于Windows,要求Cygwin 1.7或者更高。NDK不能和Cygwin1.5工作。
Android平台的兼容
* 由Android NDK创建的本地库仅仅使用在具体的最小的Android平台版本。最小的需求平台版本依据CPU的架构。下面的表详细了哪一个Android版本能和具体的CPU 架构的本地代码兼容。
本地代码CPU架构的使用 兼容的Android平台
ARM,ARM-NEON Android1.5(API Level 3) 更高
x86 Android2.3( API Level 9 ) 更高
MIPS Android2.3(API Level 9) 更高
* 这些要求意味着你可以使用在应用中NDK产生的本地库,基于ARM设备上运行Android1.5或以后。如果你部署本地库到x86和MIPS设备。你的应用必须定位到Andorid 2.3 或更高。
* 为了确保兼容性,使用NDK产生的本地库的应用必须在manifest 文件,声明<uses-sdk> 元素,使用android:minSdkVersion 属性值是3或者更高。举个例子
<manifest> <uses-sdk android:minSdkVersion="3" /> ... </manifest>* 如果你使用NDK来创建一个本地库,使用OpenGL ES APIs ,包含这个库的应用仅仅能够部署到在上述表中描述的最的版本的设备。为了确保兼容性,确保你的应用声明恰当的android:minSdkVersion属性值,如下表
OpenGl ES Version Used Compatible Android Platform Required uses-sdk Attribute
OpenGL ES 1.1 Android1.6 (API Level 4) 或者更高 android:minSdkVersion="4"
OpenGL ES 2.0 Android2.0 (API Level 5) android:minSdkversion="5"
对于关于API Level的更多信息。
* 令外,使用OpenGL ES APIs 的应用应该在manifest声明一个<uses-feature>元素,对于android:glEsVersion属性,具体应用要求的最小的OpenGL ES版本。
这确保了,Google Play将显示了你的应用仅仅对用户,这样的设备用能力支持你的应用。举个例子:
<manifest> <uses-feature android:glEsVersion="0x00020000" /> ... </manifest>* 如果你使用NDK来创建本地库,它使用API来进入Android Bitmap像素缓冲或者使用本地活动,包含这个库的应用能部署到Andorid2.2的设备或者更高。
为了确保兼容,要在manifest 声明<uses-sdk android:minSdkVersion="8"/>属性值。
安装NDK
在开发电脑上安装NDK是直白的,并涉及从下载包抽取的NDK。
在开始之前确保你下载最近的Android SDK,并升级你的应用和需要。NDK是和旧平台版本的兼容性。
为了安装NDK,跟着这些步棸:
1.在这篇文章的表,选择恰当位你的开发电脑和下载包的NDK包。
2.减压NDK下载包,使用可用的工具。当减压缩,NDK文件包含在android-ndk-<version>的目录。如果需要的话,重命名NDK目录。你也可以把它移动到电脑的位置。这个文档指的是NDK的目录。
你现在准备开始使用NDK
开始NDK
一旦你成功安装了NDK,花费时间来读NDK下的文档。你可以发现<ndk>/docs/目录的文档。特别的,读取OVERVIEW.HTML文档,以至于你懂得NDK的目录并怎么使用它。
如果你使用NDK的前一个版本,花点时间来看一下CHANGES.HTML 文档的NDK列表。
这是一个怎么使用NDK工具的大概概况:
1. 取代<project>/jni/....的本地源码。
2. 创建<project>/jni/Android.mk来描述NDK建立系统的本地资源
3. 选项:创建<project>/jni/Application.mk
4. 通过从你的工程目录的运行"ndk-build"脚本,来建立你的本地代码。它做在顶级的NDK目录:
cd <project>
<ndk>/ndk-build
这个建立工具拷贝了你用用中的分享库,到你应用程序的恰当闻之。
5. 最后,按照正常方式使用SDK工具来编译你的应用。SDK建筑工具将要打包分享库,在应用的部署的.apk文件。