要为您的应用编译和调试原生代码,您需要以下组件:
- Android 原生开发套件 (NDK):一组工具,可让您在 Android 中使用 C 和 C++ 代码。
- CMake:一个外部构建工具,与 Gradle 配合使用来构建原生库。如果您只打算使用 ndk-build,则无需此组件。
- LLDB:Android Studio 用于调试原生代码的调试器。默认情况下,LLDB 将随 Android Studio 一起安装。
本页面介绍了如何自动安装这些组件,或如何使用 Android Studio 或 sdkmanager
工具手动下载和安装它们。
自动安装 NDK 和 CMake
如果您已提前接受 NDK 和 CMake 的许可,则 Android Gradle 插件 4.2.0 或更高版本会在您首次构建项目时自动安装所需的 NDK 和 CMake。如果您已阅读并同意许可条款,则可以在脚本中使用以下命令预接受许可:
yes | ${sdk}/cmdline-tools/latest/bin/sdkmanager --licenses
安装 NDK 和 CMake
当您安装 NDK 时,Android Studio 会选择最新可用的 NDK。对于大多数项目来说,安装此默认版本的 NDK 足以满足需求。但是,如果您的项目需要一个或多个特定版本的 NDK,您可以下载并配置特定版本。这样做有助于确保在每个依赖于特定版本 NDK 的项目之间实现可重现的构建。Android Studio 会将所有 NDK 版本安装到 android-sdk/ndk/
目录中。
要在 Android Studio 中安装 CMake 和默认 NDK,请按以下步骤操作:
打开项目后,依次点击 Tools > SDK Manager。
点击 SDK Tools 标签页。
选中 NDK (Side by side) 和 CMake 复选框。
图 1. 显示“NDK (并行)”选项的“SDK 工具”窗口
点击 OK。
对话框会告诉您 NDK 软件包在磁盘上占用的空间。
点击 OK。
安装完成后,点击 Finish。
您的项目会自动同步构建文件并执行构建。请解决出现的任何错误。
配置特定版本的 CMake
SDK 管理器包含 3.6.0 分支版 CMake 和 3.10.2 版本。未设置特定 CMake 版本的项目将使用 CMake 3.10.2 构建。要设置 CMake 版本,请将以下内容添加到模块的 build.gradle
文件中:
Groovy
android { ... externalNativeBuild { cmake { ... version "cmake-version" } } }
Kotlin
android { ... externalNativeBuild { cmake { ... version = "cmake-version" } } }
如果您想使用 SDK 管理器中未包含的 CMake 版本,请按照以下步骤操作:
- 从 CMake 官方网站下载并安装 CMake。
- 在模块的
build.gradle
文件中指定您希望 Gradle 使用的 CMake 版本。 将 CMake 安装路径添加到您的
PATH
环境变量中,或将其包含在项目的local.properties
文件中,如所示。如果 Gradle 找不到您在build.gradle
文件中指定的 CMake 版本,您将收到构建错误。# If you set this property, Gradle no longer uses PATH to find CMake. cmake.dir = "path-to-cmake"</pre>
如果您的工作站上尚未安装 Ninja 构建系统,请前往 官方 Ninja 网站,下载并安装适用于您操作系统的最新版 Ninja。请务必将 Ninja 安装路径也添加到您的
PATH
环境变量中。
安装特定版本的 NDK
要安装特定版本的 NDK,请按以下步骤操作:
打开项目后,依次点击 Tools > SDK Manager。
点击 SDK Tools 标签页。
选中 Show Package Details 复选框。
选中 NDK (Side by side) 复选框及其下方与您要安装的 NDK 版本对应的复选框。Android Studio 会将所有 NDK 版本安装到
android-sdk/ndk/
目录中。图 2. 显示“NDK (并行)”选项的“SDK 工具”窗口
点击 OK。
对话框会告诉您 NDK 软件包在磁盘上占用的空间。
点击 OK。
安装完成后,点击 Finish。
您的项目会自动同步构建文件并执行构建。请解决出现的任何错误。
配置每个模块以使用您希望它使用的 NDK 版本。当使用 Android Studio 3.6 或更高版本时,如果您未指定版本,Android Gradle 插件会选择一个已知兼容的版本。
在项目中配置特定版本的 NDK
如果出现以下任一情况,您可能需要在项目中配置 NDK 版本:
- 您的项目是继承而来的,并且您需要使用特定版本的 NDK 和 Android Gradle 插件 (AGP)。有关更多信息,请参阅为 Android Gradle 插件配置 NDK。
您安装了多个 NDK 版本并希望使用其中一个特定版本。在这种情况下,请使用模块的
build.gradle
文件中的android.ndkVersion
属性指定版本,如以下代码示例所示。Groovy
android { ndkVersion "major.minor.build" // e.g., ndkVersion "21.3.6528147" }
Kotlin
android { ndkVersion = "major.minor.build" // e.g., ndkVersion "21.3.6528147" }
每个 AGP 版本的默认 NDK 版本
在发布之前,每个 AGP 版本都会与当时最新的稳定版 NDK 进行全面测试。如果您未在 build.gradle
文件中指定 NDK 版本,则会使用此 NDK 版本来构建您的项目。不同 AGP 版本的默认 NDK 版本记录在 AGP 发布说明和 AGP 历史发布说明中。