sdkmanager

sdkmanager 是一个命令行工具,可让您查看、安装、更新和卸载 Android SDK 软件包。如果您使用的是 Android Studio,则无需使用此工具,可以直接从集成开发环境 (IDE) 管理 SDK 软件包

sdkmanager 工具包含在 Android SDK 命令行工具软件包中。要使用 SDK 管理器安装命令行工具版本,请按以下步骤操作:

  1. Android Studio 页面下载最新的命令行工具软件包并解压该软件包。
  2. 将解压后的 cmdline-tools 目录移动到您选择的新目录中,例如 android_sdk。这个新目录即为您的 Android SDK 目录。
  3. 在解压后的 cmdline-tools 目录中,创建一个名为 latest 的子目录。
  4. 将原始 cmdline-tools 目录的内容(包括 lib 目录、bin 目录、NOTICE.txt 文件和 source.properties 文件)移动到新创建的 latest 目录中。现在,您可以从该位置使用命令行工具了。
  5. (可选)要安装以前版本的命令行工具,请运行以下命令:

    android_sdk/cmdline-tools/latest/bin/sdkmanager --install "cmdline-tools;version"
    
    version 替换为您要安装的版本,例如 5.0

用法

您可以使用 sdkmanager 列出已安装和可用的软件包、安装软件包以及更新软件包。有关详情,请参阅以下各节。

列出已安装和可用的软件包

要列出已安装和可用的软件包,请使用以下语法:

sdkmanager --list [options] \
           [--channel=channel_id] // Channels: 0 (stable), 1 (beta), 2 (dev), or 3 (canary)

使用 channel 选项可包含最高至并包括 channel_id 指定渠道的所有软件包。例如,指定 canary 渠道可列出来自所有渠道的软件包。

安装软件包

要安装软件包,请使用以下语法:

sdkmanager packages [options]

packages 参数是 SDK 风格的路径(如 --list 命令所示),并用引号括起来。例如 "build-tools;36.0.0""platforms;android-36"

您可以传递多个以空格分隔的软件包路径,但每个路径都必须用引号括起来。例如,以下是如何安装最新的平台工具和 API 级别 36 的 SDK 工具:

sdkmanager "platform-tools" "platforms;android-36"

或者,您也可以传递一个指定所有软件包的文本文件:

sdkmanager --package_file=package_file [options]

package_file 参数是一个文本文件的路径,其中每一行都是要安装的软件包的 SDK 风格路径(无需引号)。

要卸载,请添加 --uninstall 标志:

sdkmanager --uninstall packages [options]
sdkmanager --uninstall --package_file=package_file [options]

要安装 CMake 或 NDK,请使用以下语法:

sdkmanager --install
           ["ndk;major.minor.build[suffix]" | "cmake;major.minor.micro.build"]
           [--channel=channel_id] // NDK channels: 0 (stable), 1 (beta), or 3 (canary)

例如,使用以下命令安装指定的 NDK 版本,无论它当前处于哪个渠道:

sdkmanager --install "ndk;21.3.6528147" --channel=3 // Install the NDK from the canary channel (or below)
sdkmanager --install "cmake;10.24988404" // Install a specific version of CMake

更新所有已安装的软件包

要更新所有已安装的软件包,请使用以下语法:

sdkmanager --update [options]

接受许可协议

您需要为您安装的每个软件包接受相应的许可协议。如果您是在 Android Studio 内安装软件包,则会在安装流程中自动进行此步骤。

如果您没有安装 Android Studio,或者是在 CI 服务器或其他没有安装图形界面的无头 Linux 设备上运行,请在命令行执行以下操作:

sdkmanager --licenses

这将提示您接受所有尚未接受的许可协议。

选项

下表列出了上述各节中所述命令的可用选项:

选项 描述
--sdk_root=path 使用指定的 SDK 路径,而不是包含此工具的 SDK 路径。
--channel=channel_id 包含最高至并包括 channel_id 的渠道中的软件包。可用渠道包括:

0(稳定版/Stable)、1(测试版/Beta)、2(开发版/Dev)和 3(Canary)。

--include_obsolete 在软件包列表或更新中包含过时的软件包。仅供 --list--update 使用。
--no_https 强制所有连接使用 HTTP 而不是 HTTPS。
--newer 配合 --list 使用,仅显示新软件包或可更新的软件包。
--verbose 详细输出模式。会打印错误、警告和信息性消息。
--proxy={http | socks} 通过指定类型的代理进行连接:http 用于 HTTP 或 FTP 等高级协议,socks 用于 SOCKS (V4 或 V5) 代理。
--proxy_host={IP_address | DNS_address} 要使用的代理的 IP 或 DNS 地址。
--proxy_port=port_number 要连接的代理端口号。