如需为您的应用编译和调试原生代码,您需要以下组件:
- Android 原生开发套件 (NDK):这是一套可让您在 Android 应用中使用 C 和 C++ 代码的工具。
- CMake:这是一款外部构建工具,可与 Gradle 搭配使用来构建原生库。如果您只计划使用 ndk-build,则不需要此组件。
- LLDB:Android Studio 用于调试原生代码的调试程序。默认情况下,安装 Android Studio 时会随同安装 LLDB。
本页介绍了如何自动安装这些组件,以及如何使用 Android Studio 或 sdkmanager
工具手动下载和安装这些组件。
自动安装 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 时,这样做有助于确保各个项目的 build 都可重现。Android Studio 会将所有版本的 NDK 安装在 android-sdk/ndk/
目录中。
如需在 Android Studio 中安装 CMake 和默认 NDK,请执行以下操作:
打开项目后,依次点击 Tools > SDK Manager。
点击 SDK Tools 标签页。
选中 NDK (Side by side) 和 CMake 复选框。
图 1. 显示 NDK (Side by side) 选项的 SDK Tools 窗口
点击 OK。
此时系统会显示一个对话框,告诉您 NDK 软件包占用了多少磁盘空间。
点击 OK。
安装完成后,点击 Finish。
您的项目会自动同步 build 文件并执行构建。修正发生的所有错误。
配置特定版本的 CMake
SDK 管理器包含 CMake 的 3.6.0 分支版本和 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 (Side by side) 选项的 SDK Tools 窗口
点击 OK。
此时系统会显示一个对话框,告诉您 NDK 软件包占用了多少空间。
点击 OK。
安装完成后,点击 Finish。
您的项目会自动同步 build 文件并执行构建。修正发生的所有错误。
为每个模块配置您想要让其使用的 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 版本说明和 AGP 过往版本说明中介绍了不同版本 AGP 的默认 NDK 版本。