安装及配置 NDK 和 CMake

如需为您的应用编译和调试原生代码,您需要以下组件:

  • Android 原生开发套件 (NDK):一套工具,可让您在 Android 应用中使用 C 和 C++ 代码。
  • CMake:一款外部构建工具,可与 Gradle 搭配使用来构建原生库。如果您只计划使用 ndk-build,则不需要此组件。
  • LLDB:Android Studio 用于调试原生代码的调试程序。默认情况下,LLDB 将与 Android Studio 一起安装。

本页介绍了如何使用 Android Studio 或 sdkmanager 工具下载和安装这些组件。

安装 NDK 和 CMake

当您安装 NDK 时,Android Studio 会选择最新的 NDK。对于大多数项目,安装此默认版本的 NDK 已经足够。不过,如果您的项目需要一个或多个特定版本的 NDK,您可以下载并配置特定版本。当多个项目各自依赖于特定版本的 NDK 时,这样做有助于确保构建版本在这些项目之间可重现。Android Studio 会将所有版本的 NDK 安装在 android-sdk/ndk/ 目录中。

如需在 Android Studio 中安装 CMake 和默认 NDK,请执行以下操作:

  1. 打开项目后,依次点击 Tools > SDK Manager

  2. 点击 SDK Tools 标签页。

  3. 选中 NDK (Side by side)CMake 复选框。

    SDK 管理器的图片 图 1:显示 NDK (Side by side) 选项的 SDK Tools 窗口

  4. 点击 OK

    此时系统会显示一个对话框,告诉您 NDK 软件包占用了多少磁盘空间。

  5. 点击 OK

  6. 安装完成后,点击 Finish

  7. 您的项目会自动同步构建文件并执行构建。修正发生的所有错误。

配置特定版本的 CMake

SDK 管理器包含 CMake 的 3.6.0 派生版本和版本 3.10.2。未设置特定 CMake 版本的项目使用 CMake 3.10.2 进行构建。如需设置 CMake 版本,请将以下内容添加到模块的 build.gradle 文件中:

android {
    ...
    externalNativeBuild {
        cmake {
            ...
            version "cmake-version"
        }
    }
}

如果您想要使用 SDK 管理器未包含的 CMake 版本 3.7 或更高版本,请按以下步骤操作:

  1. 从 CMake 官方网站下载并安装 CMake 3.7 或更高版本
  2. 在模块的 build.gradle 文件中指定您想要让 Gradle 使用的 CMake 版本。
  3. 将 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"
    
  4. 如果您尚未在工作站上安装 Ninja 构建系统,请访问 Ninja 官方网站,然后下载并安装适用于您的操作系统的最新版 Ninja。此外,请务必将 Ninja 的安装路径也添加到 PATH 环境变量。

安装特定版本的 NDK

要安装特定版本的 NDK,请执行以下操作:

  1. 打开项目后,依次点击 Tools > SDK Manager

  2. 点击 SDK Tools 标签页。

  3. 选中 Show Package Details 复选框。

  4. 选中 NDK (Side by side) 复选框及其下方与您想要安装的 NDK 版本对应的复选框。Android Studio 会将所有版本的 NDK 安装在 android-sdk/ndk/ 目录中。

    “SDK Tools”窗口的图片 图 2:显示 NDK (Side by side) 选项的 SDK Tools 窗口

  5. 点击 OK

    此时系统会显示一个对话框,告诉您 NDK 软件包占用了多少空间。

  6. 点击 OK

  7. 安装完成后,点击 Finish

  8. 您的项目会自动同步构建文件并执行构建。修正发生的所有错误。

  9. 为每个模块配置您想要让其使用的 NDK 版本。使用 Android Studio 3.6 或更高版本时,如果您不指定版本,Android Gradle 插件会选择已知兼容的版本。

在项目中配置特定版本的 NDK

如果满足以下某种条件,您可能需要在项目中配置 NDK 版本:

  • 项目是继承的,您需要使用特定版本的 NDK 和 Android Gradle 插件 (AGP)。如需了解详情,请参阅为 Android Gradle 插件配置 NDK
  • 您安装了多个版本的 NDK,您想要使用某个特定版本。在这种情况下,请在模块的 build.gradle 文件中使用 android.ndkVersion 属性指定相应的版本,如以下代码示例所示。
android {
    ndkVersion "major.minor.build" // e.g.,  ndkVersion '21.3.6528147'
}

每个 AGP 版本对应的默认 NDK 版本

在发布之前,每个 AGP 版本都会使用当时最新的 NDK 稳定版进行全面测试。对于 AGP 版本 3.6 及更高版本,如果您build.gradle 文件中指定 NDK 版本,系统将使用上述 NDK 版本构建项目。AGP 版本说明中介绍了默认 NDK 版本。下表列出了当前的默认 NDK 版本:

Android Studio/Gradle 插件版本
4.1 4.0 3.6 3.5 3.4
为 AGP 版本指定的
默认 NDK 版本
21.1.6352462 21.0.6113669 20.0.5594570 未指定默认版本