原生开发工具包 (NDK) 是一套工具,允许您将 C 和 C++ 代码与 Android 一起使用,并提供 平台库,您可以使用这些库来管理原生活动和访问物理设备组件,例如传感器和触摸输入。对于大多数只需要使用 Java 代码和框架 API 来开发应用的新手 Android 程序员来说,NDK 可能并不适用。但是,如果您需要执行以下一项或多项操作,则 NDK 可能很有用
- 充分利用设备性能以实现低延迟或运行计算密集型应用,例如游戏或物理模拟。
- 重用您自己或其他开发人员的 C 或 C++ 库。
使用 Android Studio 2.2 或更高版本,您可以使用 NDK 将 C 和 C++ 代码编译成原生库,并使用 Gradle(IDE 的集成构建系统)将其打包到您的 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):一套允许您将 C 和 C++ 代码与 Android 一起使用的工具。
- 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
构建脚本,则可以跳过此步骤。
- 如果您的现有原生库已具有
-
将 Gradle 链接到您的原生库,方法是提供 CMake 或 ndk-build 脚本文件的路径。Gradle 使用构建脚本将源代码导入您的 Android Studio 项目并将您的原生库(SO 文件)打包到 APK 中。
注意:如果您的现有项目使用已弃用的
ndkCompile
工具,则应打开您的build.properties
文件并在将 Gradle 配置为使用 CMake 或 ndk-build 之前删除以下代码行// Remove this line android.useDeprecatedNdk = true
- 构建并运行您的应用,方法是点击运行。Gradle 将您的 CMake 或 ndk-build 过程添加为依赖项,以编译、构建并将您的原生库与您的 APK 一起打包。
应用在物理设备或模拟器上运行后,您可以使用 Android Studio调试您的应用。否则,要了解有关 NDK 及其组件的更多信息,请阅读概念页面。