原生开发套件 (NDK) 是一套工具,可让您在 Android 上使用 C 和 C++ 代码,并提供平台库,您可以使用这些库来管理原生 Activity 并访问物理设备组件,例如传感器和触控输入。对于大多数仅需使用 Java 代码和框架 API 开发应用的 Android 初学者而言,NDK 可能不太适合。但是,在以下一个或多个情况下,NDK 会很有用:
- 从设备中挤出额外性能,以实现低延迟或运行计算密集型应用,例如游戏或物理模拟。
- 重用您自己或其他开发者编写的 C 或 C++ 库。
使用 Android Studio 2.2 及更高版本,您可以使用 NDK 将 C 和 C++ 代码编译到原生库中,然后使用 IDE 的集成构建系统 Gradle 将其打包到您的 APK 中。然后,您的 Java 代码可以通过 Java 原生接口 (JNI) 框架调用原生库中的函数。要详细了解 Gradle 和 Android 构建系统,请阅读配置您的构建。
Android Studio 用于编译原生库的默认构建工具是 CMake。Android Studio 也支持 ndk-build,因为有大量现有项目使用此构建工具包。但是,如果您要创建新的原生库,则应使用 CMake。
本指南为您提供了在 Android Studio 上开始使用 NDK 所需的信息。如果您没有最新版本的 Android Studio,请立即下载并安装。
注意:实验性 Gradle 用户:如果以下任何情况适用于您,请考虑迁移到插件版本 2.2.0 或更高版本,并使用 CMake 或 ndk-build 构建您的原生库:您的原生项目已使用 CMake 或 ndk-build;您更愿意使用稳定版 Gradle 构建系统;或者您需要附加工具(例如 CCache)的支持。否则,您可以继续使用实验版 Gradle 和 Android 插件。
下载 NDK 和工具
要编译和调试应用的原生代码,您需要以下组件:
- Android 原生开发套件 (NDK):一套可让您在 Android 上使用 C 和 C++ 代码的工具。
- CMake:一种外部构建工具,与 Gradle 协同工作以构建您的原生库。如果您只打算使用 ndk-build,则无需此组件。
- LLDB:Android Studio 用于调试原生代码的调试器。
有关安装这些组件的信息,请参阅安装和配置 NDK 和 CMake。
创建或导入原生项目
设置 Android Studio 后,您可以简单地创建支持 C/C++ 的新项目。但是,如果您想向现有 Android Studio 项目添加或导入原生代码,则需要遵循以下基本流程:
-
创建新的原生源文件并将其添加到您的 Android Studio 项目中。
- 如果您已拥有原生代码或想要导入预构建的原生库,则可以跳过此步骤。
-
创建 CMake 构建脚本,告知 CMake 如何将您的原生源构建为库。如果您要导入并链接预构建库或平台库,也需要此构建脚本。
- 如果您的现有原生库已包含
CMakeLists.txt
构建脚本,或者使用 ndk-build 并包含Android.mk
构建脚本,则可以跳过此步骤。
- 如果您的现有原生库已包含
-
通过提供 CMake 或 ndk-build 脚本文件的路径,将 Gradle 链接到您的原生库。Gradle 使用构建脚本将源代码导入您的 Android Studio 项目,并将您的原生库(SO 文件)打包到 APK 中。
注意:如果您的现有项目使用已弃用的
ndkCompile
工具,您应该先打开您的build.properties
文件并移除以下代码行,然后再将 Gradle 配置为使用 CMake 或 ndk-build:// Remove this line android.useDeprecatedNdk = true
-
点击 Run
,构建并运行您的应用。Gradle 将您的 CMake 或 ndk-build 进程添加为依赖项,以编译、构建并将您的原生库与 APK 打包在一起。
当您的应用在物理设备或模拟器上运行后,您可以使用 Android Studio调试您的应用。否则,要详细了解 NDK 及其组件,请阅读概念页面。