AndroidNDKRelease中文文档

上传人:xy****7 文档编号:45211062 上传时间:2018-06-15 格式:DOC 页数:6 大小:72KB
返回 下载 相关 举报
AndroidNDKRelease中文文档_第1页
第1页 / 共6页
AndroidNDKRelease中文文档_第2页
第2页 / 共6页
AndroidNDKRelease中文文档_第3页
第3页 / 共6页
AndroidNDKRelease中文文档_第4页
第4页 / 共6页
AndroidNDKRelease中文文档_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《AndroidNDKRelease中文文档》由会员分享,可在线阅读,更多相关《AndroidNDKRelease中文文档(6页珍藏版)》请在金锄头文库上搜索。

1、Android1.5 NDK Release 1中文说明文档中文说明文档Luggie修修 订订 记记 录录序号版 本日 期作 者摘 要 说 明11.02009-6-27luggie创建,编写234567891011121314151617181920Android NDK 是配合 Android SDK 的工具,用来编译应用的原生代码。他只能与 Android SDK 配合使用,因此下载 NDK 之前请先安装 Android1.5 SDK。Android NDK 是什么?Android NDK 是编译嵌入在 Android 应用中的原生代码的工具。 Android 应用运行在 Dalvik 虚

2、拟机上。NDK 允许开发者用原生代码(C 或 C+)实现应用 的一部分。这将给某些应用带来好处,这种方式可重用代码,而且在某些情况下可加快运 行速度。 NDK 提供了: 提供了将 C 和 C+源代码生成原生代码库的工具和文件 提供了将原生库嵌入 apk 文件的方法 提供了兼容 1.5 版本以上的原生系统头文件和库 提供了文档,示例和指引Android 1.5 NDK 支持 ARMv5TE 机器指令集,提供稳定的 C 库头文件(C library) ,JNI 接 口和其他的库。 NDK 并不适用于大部分应用。作为开发者,你应该衡量它的优缺点;很明显,用原生代码 并不能自动提升性能,却增加了应用的

3、复杂度。NDK 适合用于独立的、占用内存少、占用 较多 CPU 资源的处理,例如,信号处理、物理仿真等等。简单的用 C 重写代码一般不会 带来性能的大幅提升。不过,NDK 提供了重用现有 C/C+的有效途径。 注意,NDK 并不能让你开发纯原生应用。Android 的主要运行时仍然是 Dalvik 虚拟机。NDK 的内容开发工具NDK 包含了一套交叉编译工具(编译,linkers 等) ,它可生成 Linux,OS X 和 windows(用 Cygwin)上的原生 ARM 的二进制码。 他提供了一套原生 API 的系统头文件(兼容今后版本):libc (C library) headers

4、libm (math library) headers JNI interface headers libz (Zlib compression) headers liblog (Android logging) header A Minimal set of headers for C+ support NDK 也提供了编译系统,你可以快速编译源代码,而不用处理 toolchain/platform/CPU/ABI 的细节问题。你只需创建很短的编译文件,用来说明哪些源代码需要编译以及编译到哪个 目标 Android 应用,编译工具将根据此文件编译并将生成的共享库放到对应的应用下。 重要重要:

5、除上述的库之外,Android1.5 的原生系统库在以后的版本有可能改变。因此,你的 应用应该只适用 NDK 提供的库。文档NDK 包包含了一套文档,描述了 NDK 的功能和创建 Android 应用共享库的使用方法。在 这个版本中,文档包含在下载的 NDK 包中,路径:/docs/。文档包含如下文件: INSTALL.TXT 说明如何安装、配置 NDK OVERVIEW.TXT 概要介绍 NDK 的功能和用法 ANDROID-MK.TXT 说明 Android.mk 的用法, Android.mk 用来指定需要编译的源代码 APPLICATION-MK.TXT 说明 Application.

6、mk 的用法 file, Application.mk 用来指定目标 应用 HOWTO.TXT 介绍与 NDK 开发相关的任务. SYSTEM-ISSUES.TXT 如果用 NDK 开发,你需要了解 Android 系统映像相关的知识 STABLE-APIS.TXT NDK 头文件列表 另外,还包含了“bionic”C 库的详细信息,如果用 NDK 开发,你应该了解这些信息。路 径:/docs/system/libc/:OVERVIEW.TXT介绍“bionic”C 库及其特性示例应用NDK 包含了两个 Android 应用,用来说明如何在 Android 应用中用原生代码。hello-jni

7、该示例调用共享库(shared library)的原生方法获取一个字符串,并显示在应用 的界面上。Two-libs该示例动态加载一个共享库,并调用其中的方法,该方法由一个导入到共享库 的静态库实现。系统和软件要求本节说明使用 Android NDK 的系统和软件要求,以及用 NDK 开发的应用的平台兼容性问 题。 Android SDK 需要完整安装 Android SDK Android SDK 版本为 1.5 或以上版本 支持的操作系统支持的操作系统Windows XP (32-bit) or Vista (32- or 64-bit) Mac OS X 10.4.8 or later (

8、x86 only) Linux (32- or 64-bit, tested on Linux Ubuntu Dapper Drake) 需要的开发工具需要的开发工具 在所有操作系统上,都需要安装 GNU Make 3.81 或更高版本。早期的版本也可能可用, 但未经测试验证。 在 windows 上需要安装较新版本 Cygwin,包括 gmake 和 gcc 包。 Android 平台兼容性平台兼容性 NDK 生成的原生库只能在 Adroid1.5 或更高版本上运行。这是因为相关的 toolchain 和 ABI 发生了变化,使得原生库与 1.0 和 1.1 的系统映像不兼容。 由于上述原因

9、,你用 NDK 开发的原生库对应的应用只能运行在 Android1.5 或更高版 本上。为了确保兼容,NDK 开发的应用必须在其 manifest 文件中声明元 素,属性为“android:minSdkVersion=“3“”安装 NDK安装 NDK 比较简单,涉及到解压下载到的 NDK 包和运行安装的脚本。 首先需要确认你安装了 Android SDK1.5 或更高版本,且按需要升级了你的应用和环境。 接下来开始安装: 1 下载合适的 NDK 包 2 解压 NDK。解压后,NDK 文件放在 android-ndk-中。你可以重命名此目录也 可移动到其他目录下。本文档中 NDK 根目录用表示。

10、 3 打开命令行窗口,在 NDK 根目录下执行安装脚本。该脚本用来设置你的环境、生成以 后需要的主机配置文件(编译生成共享库时会用到) 。脚本路径如下: /build/host-setup.sh 如果脚本执行成功,将显示“Host setup complete.“。如果执行失败,将显示用法说明, 以便你解决问题。 这样便安装完毕,可以可是使用 NDK 了。开始使用 NDKNDK 安装成功后,可在/docs/目录下查看相关文档。为了理解 NDK 的目的和用法, 可以看 OVERVIEW.TXT。 以下是 NDK 工具的一般用法: 1 你的 native 源代码应该放在/sources/.下。也可

11、以将源代码链接到其他 目录。这些源代码并不是完全与某一个共享库或 Android 应用绑定在一起,相反,他们 可通过不同的配置文件生成对应不同 Android 应用的共享库。 2 创建/sources/Android.mk 来指定要编译的源代码。 3 创建/apps/Application.mk 来指定对应的目标 Android 应用。这个文件将一个 Android SDK 应用工程与/sources/中的共享库关联起来,并指定了接收共 享库的应用工程所在目录。 4 从 NDK 根目录运行 make 指令进行源代码编译: $ make APP= 编译工具将拷贝共享库到应用工程的相应目录。 5

12、最后,用 SDK 工具编译你的 Android 应用。SDK 编译工具将把共享库打到 apk 包中。 更详细的信息请查看 NDK 包中的文档。示例使用NDK 包含了两个例子应用,通过示例说明在 Android 应用中如何使用原生代码:hello-jni该示例调用共享库(shared library)的原生方法获取一个字符串,并显示在 应用的界面上。Two-libs该示例动态加载一个共享库,并调用其中的方法,该方法由一个导入到共 享库的静态库实现。 每个示例,都包含了一个 Android 应用工程、对应的 C 源代码以及必需的 Android.mk 和 Application.mk 文件。应用工

13、程路径是/apps/project/,C 代码路径是 /sources/samples/。安装好 NDK 后,你可以在 NDK 根目录用以下命令编译 出示例的共享库: $ make APP=hello-jni compiles /sources/samples/hello-jni/hello-jni.c and outputs a shared library to /apps/hello-jni/project/libs/armeabi/libhello-jni.so. $ make APP=two-libs compiles /sources/samples/two-libs/second.c and first.c and outputs a shared library to /apps/two-libs/project/libs/armeabi/libtwolib-second.so. 然后,编译对应的 Android 应用。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号