面向英特尔® 架构(IA)的原生开发套件(NDK)

提交新文章

2011年10月15日 08:00


目标

本白皮书介绍了原生开发套件(NDK),即用于开发带嵌入式原生代码的 Android* 应用的工具集。本文描述了 NDK 应用的基本编码结构,并提供了安装 NDK 和使用 NDK 构建应用的操作说明。

目录

  1. Android* 原生开发套件(NDK)简介
  2. 何时使用原生开发套件(NDK)
  3. 系统需要求
  4. 安装原生开发套件(NDK)
  5. 原生开发套件(NDK)应用的结构
  6. 构建原生开发套件(NDK)应用
  7. 调试原生开发套件(NDK)应用
  8. 总结

Android* 原生开发套件(NDK)简介

NDK 可帮助 Android* 开发人员在自己的应用中集成 C 或 C++ 代码。它包括以下组件:

  • 一套交叉工具链和构建脚本,用来通过位于您开发平台上的 C/C++ 源文件生成面向英特尔® x86 架构的二进制库
  • 相关方法,用来将原生二进制库封装至将安装于英特尔® 凌动™ 架构设备之上的 apk 文件中
  • 一组适用于 Android* 平台的原生头文件和库

何时使用原生开发套件(NDK)

NDK 的主要目标包括:

  • 复用采用 C 或 C++ 语言实施的逻辑和源代码
  • 在某些情况下,实现更高的性能

采用 C 或 C++ 语言编码并不一定会带来更高的应用性能,反而肯定会增加代码的复杂性。除了上述两个主要目标之外,我们还鼓励开发人员实施仅基于 Android* 软件开发套件(SDK)的全新功能。

系统要求

The Android* SDK
  • Android* 1.5 或更高版本
  • 使用本地activity的应用要求部署 Android* 2.3 或更高版本
Java*
  • JDK 1.5 或 1.6
操作系统
  • Linux(32 或 64 位、Ubuntu 11.04 或更高版本、Fedora F-12 或更高版本)
  • Windows XP*(32 位)、Windows Vista* 或 Windows 7*(32 或 64 位),带 Cygwin 1.7 或更高版本

安装原生开发套件(NDK)

您可以在 http://developer.android.com/sdk/ndk/index.html 网站上找到原生开发套件(NDK)安装包。

  • 下载适用于您所使用的开发环境的 NDK 安装包。
  • 将安装包提取至一个目录。NDK 文件将位于该目录下的 android-ndk 目录当中。
  • 若要支持英特尔® 凌动™ 架构,需使用 NDK r6b 或更高版本。

原生开发套件(NDK)应用的结构

Android* NDK 基于 Java* 原生接口(JNI)编程框架。

  • 将您的应用的 Java 源代码置于 $PROJECT/jni/ 之下,指明一种或多种体现它们采用原生代码实施的“原生”方法,例如:native String calculatePI(int decimalPosition);
  • 提供一个根据标准 UNIX 规则命名的原生共享库。该共享库包括这些方法的实施,例如 libpicalc.so。它将被封装至您的应用的 .apk 文件中。
  • 明确地加载该库。例如System.loadLibrary("picalc");
    请注意,共享库文件名中的“lib”前缀和“.so”后缀不应包含在 loadLibrary 函数调用的参数中。如欲了解更多相关信息,请访问: http://java.sun.com/developer/onlineTraining/Programming/JDCBook/jniexamp.html
  • 将您的原生源文件置于 $PROJECT/jni/ 之下。
  • 编写 $PROJECT/jni/Android.mk,向 NDK 构建系统描述您的源文件。
  • 可选,编写 $PROJECT/jni/Application.mk,向构建系统更加详细地描述您的工程。

构建原生开发套件(NDK)应用

您可以通过您的工程目录或任何子目录运行“$NDK/ndk-build”脚本,构建您的原生代码。

  • 在面向英特尔架构(IA)的 NDK 中,使用“APP_ABI := x86”命令行参数。这将在 $PROJECT/libs/x86/ $NDK/ndk-build "APP_ABI := x86 " 之下生成共享库。
  • 现在,您可以开始按照标准流程构建 Android* apk 了,例如使用 Eclipse* 或 Apache Ant*。生成的 apk 文件可在 $PROJECT/bin 中找到。您可以在基于 IA 的设备或模拟器上安装 apk,测试应用。

调试原生开发软件(NDK)应用

NDK 提供了一个可用于调试嵌入式原生代码的命令行脚本 ndk-gdb。

总结

对于基于英特尔架构的 Android* 平台而言,NDK 是对 SDK 非常有用的补充。它可帮助实现复用性,而且在部分情形下还能够提高性能。为了实现这些基本目标,NDK 提供了一套工具来构建、集成、测试和调试嵌入于应用内部的原生源代码。但另一方面,NDK 增加了编码的复杂性。开发人员应只出于本文所描述的目的使用该套件。

声明

* 文中涉及的其它名称及商标属于各自所有者资产。

版权所有 © 2011 英特尔公司。保留所有权利。

英特尔、Intel、凌动和 Atom 是英特尔公司在美国和其他国家(地区)的商标。

本文所提供之信息均与英特尔产品相关。本文不代表英特尔公司或其它机构向任何人明确或隐含地授予任何知识产权。除相关产品的英特尔销售条款与条件中列明之担保条件以外,英特尔公司不对销售和/或使用英特尔产品做出任何其它明确或隐含的担保,包括对适用于特定用途、适销性,或不侵犯任何专利、版权或其它知识产权的担保。

除非经英特尔书面同意,英特尔产品并非设计或有意用于任何英特尔产品故障可能会引起人身伤亡事故的应用领域。

英特尔可以随时在不发布声明的情况下修改规格和产品说明。设计者不得依赖于带有“保留”或“未定义”的任何特性或说明。英特尔保留今后对其定义的权利,对于因今后对其进行修改所产生的冲突或不兼容性概不负责。此处信息可能随时更改,恕不另行通知。请勿使用本信息来对某个设计做出最终决定。

文中所述产品可能包含设计缺陷或错误,已在勘误表中注明,这可能会使产品偏离已经发布的技术规范。英特尔提供最新的勘误表备索。

订购产品前,请联系您当地的英特尔销售办事处或分销商了解最新技术规范。

如欲获得本文或其它英特尔文献中提及的带订单编号的文档副本,可致电 1-800-548-4725,或访问: http://www.intel.com/design/literature.htm

优化声明
英特尔编译器针对非英特尔微处理器的优化程度可能与英特尔微处理器相同(或不同)。这些优化包括 SSE2®、SSE3 和 SSSE3 指令集以及其它优化。对于在非英特尔制造的微处理器上进行的优化,英特尔不对相应的可用性、功能或有效性提供担保。该产品中依赖于处理器的优化仅适用于英特尔微处理器。部分非针对英特尔微体系架构的优化也为英特尔微处理器保留了下来。如欲了解更多有关本声明所涉及的特定指令集的信息,请参阅适用产品的“用户和参考指南”。

Notice revision #20110804