NDK API介绍:https://developer.android.com/ndk/guides/concepts.html#naa
从 API 级别 9 开始,您可以使用原生代码编写整个 Android 应用,无需使用任何 Java。在原生代码中编写您的应用本身并不能让您的应用在 VM 中运行。 此外,您的应用仍必须通过 JNI 访问 Android 平台的大部分功能。如需有关这些标头的详细信息,请参阅 NDK API 参考文档以及标头本身的注释。 另外,有关编写原生应用较大的主题的详细信息,请参阅原生 Activity 和应用。
当您添加其中一个或多个标头时,您也必须要链接 libandroid.so
库。 如需链接 libandroid.so
,在 Android.mk
文件中添加以下行:
LOCAL_LDLIBS += -landroid
本节简要说明 NDK 的工作方式。Android NDK 是一组允许您将 C 或 C++(“原生代码”)嵌入到 Android 应用中的工具。 能够在 Android 应用中使用原生代码对于想执行以下一项或多项操作的开发者特别有用:
- 在平台之间移植其应用。
- 重复使用现有库,或者提供其自己的库供重复使用。
- 在某些情况下提高性能,特别是像游戏这种计算密集型应用
流程
为 Android 开发原生应用的一般流程如下:
- 设计应用,确定要在 Java 中实现的部分,以及要以原生代码形式实现的部分。
注:虽然可以完全避免 Java,但您可能发现,Android Java 框架对于包括控制显示和 UI 在内的任务很有用。
- 像创建任何其他 Android 项目一样创建一个 Android 应用项目。
- 如果要编写纯原生应用,请在
AndroidManifest.xml
中声明NativeActivity
类。 如需了解详细信息,请参阅原生 Activity 和应用。 - 在“JNI”目录中创建一个描述原生库的
Android.mk
文件,包括名称、标志、链接库和要编译的源文件。 - 或者,也可以创建一个配置目标 ABI、 工具链、发行/调试模式和 STL 的
Application.mk
文件。对于其中任何您未指明的项目,将分别使用以下默认值:- ABI:armeabi
- 工具链:GCC 4.8
- 模式:发行
- STL:系统
- 将原生来源置于项目的
jni
目录下。 - 使用 ndk-build 编译原生(
.so
、.a
)库。 - 构建 Java 组件,生成可执行
.dex
文件。 - 将所有内容封装到一个 APK 文件中,包含
.so
、.dex
以及应用运行所需的其他文件
NDK 的 API 参考包括 NDK 针对 Android 提供的原生标头基本集的相应文档。 这些标头及其相关的内容库可显示各种功能,不然只能通过 Android 框架访问这些功能。以下是其中的几项功能:
- 使用硬件传感器。
- 访问存储空间。
- 处理用户输入。
- 设置配置信息,如屏幕方向。
API 参考提供有关 NDK 中附带的上述功能及其他功能的详细信息。