Android CLI 概览

Android CLI 是一个命令行界面,可让您使用任意工具更轻松高效地为 Android 构建应用。它为智能体优先工作流标准化了核心开发能力,为开发者提供了官方工具、技能和知识的入口,以便更有效地进行开发。它还可以简化 CI、维护和任何其他脚本自动化,以适应 Android 开发日益分布式的特性。

例如,智能体或脚本可以使用 CLI 自动执行环境设置、从模板搭建新项目,以及直接从终端管理虚拟设备。它还让智能体能够访问 Android 技能 和专门的 Android 知识库,以帮助确保您的 项目应用 Android 推荐的模式和最佳实践。

安装 Android CLI

如需安装 Android CLI,请按以下步骤操作:

  1. 下载 Android CLI

  2. 如需确保您使用的是最新版本,请更新 Android CLI:

    android update
    

如需检查您的机器上是否已安装 Android CLI,请运行 which androidcommand -v android:如果返回路径,则表示已安装。

为智能体设置

如需帮助智能体了解和使用 Android CLI,请运行 init 以安装 android-cli 技能:

android init

已知问题

  • 目前,适用于 Windows 的 android emulator 命令已停用。

如果您遇到任何问题或希望提供反馈,请 报告 bug

全局选项

这些是可选标志,您可以与其他 Android CLI 命令搭配使用。

-h, --help

用法android <command> -h

说明: 显示所讨论工具或特定命令的帮助手册。

示例

  • android -h
  • android create -h

--sdk

用法android --sdk=<path-to-sdk> <command>

说明: 您要用于后续命令的 Android SDK 的路径。您可以使用 --sdk 设置暂时替换默认 Android SDK,而无需在每次想要切换时都更改您的全局环境变量。如需检查您默认使用的 Android SDK,请运行 android info

示例android --sdk=<path/to/sdk> sdk list

命令

本部分列出了所有 Android CLI 命令,并介绍了它们的作用。 所有这些命令都应以 android 开头,例如 android createandroid run 等。可选修饰符用方括号 [] 括起来,而必需的实参则不括起来。

create

用法android create [--dry-run] [--verbose] [--name=<application-name>] [--output=<dest-path>] [<template-name>]

说明: 从模板初始化新项目。如需查看模板选项,请运行 android create -h

实参(必需)

  • -o, --output - 目标项目目录路径。

选项

  • --dry-run - 模拟整个项目创建过程,但实际上不 保存任何文件。例如,您可以先执行试运行,了解不同模板的作用,然后再确定要使用哪个模板。
  • --verbose - 启用详细输出,包括从模板复制哪些 文件等信息。
  • --name=<application-name> - 项目目录的名称。如果省略,则使用输出目录。
  • <template-name> - 用于创建新项目的模板的名称。 如果省略,则使用 empty-activity-agp-9

示例android create --dry-run --verbose empty-activity-agp-9

create list

用法android create list

说明: 列出所有可用于创建新项目的模板。

describe

用法android describe [--project_dir=<project-directory>]

说明: 分析 Android 项目以生成描述性元数据。 此命令会识别并输出 JSON 文件的路径,这些文件详细说明了项目的结构,包括构建目标及其对应的输出工件位置(例如 APK 文件)。借助这些信息,其他工具和命令可以高效地找到构建工件。

选项

  • --project_dir - 要描述的项目目录。如果省略,则使用当前目录。

示例android describe --project_dir=/path/to/your/project

docs

用法

  • android docs search <query>
  • android docs fetch <kb-url>

说明android docs 命令是一个两步流程,用于 直接从 CLI 访问 Android 知识库。 首先,使用 search 命令搜索与查询相关的文档。搜索结果将包含以 kb:// 开头的特殊网址,然后您可以将这些网址与 fetch 命令搭配使用,以将文档命令输出到终端。

示例

  • android docs search 'How do I improve my app performance?'
  • android docs fetch kb://android/topic/performance/overview

emulator create

用法android emulator create [--list-profiles] [--profile=<profile-name>]

说明: 创建虚拟设备。

选项

  • --list-profiles - 列出可用于创建 设备的设备配置文件。
  • --profile=<profile-name> - 使用指定的配置文件创建设备。如果省略此选项,系统将创建 medium_phone 配置文件。

emulator list

用法android emulator list

说明: 列出可用的虚拟设备。

emulator start

用法android emulator start <device-name>

说明: 启动指定的虚拟设备。

实参(必需)

  • <device-name> - 要启动的设备名称(例如 medium_phone)。 使用 android emulator list 查看可用设备。

示例android emulator start medium_phone

emulator stop

用法android emulator stop <device-serial-number>

说明: 停止指定的虚拟设备。

实参(必需)

  • <device-serial-number> - 要停止的设备序列号。

示例android emulator stop emulator-5554

info

用法android info

说明: 显示所用默认 Android SDK 的路径。如需更改 所用的 Android SDK,请使用 --sdk

init

用法android init

说明: 通过安装 android-cli 技能为智能体设置环境。

layout

用法android layout [--pretty] [--output] [--diff]

说明: 以 JSON 格式返回活跃 Android 应用(通过实体设备或模拟器连接)的界面布局。

选项

  • -p, --pretty - 使用缩进和换行符设置 JSON 输出的格式 以便用户阅读。
  • -o, --output - 指定用于保存布局树的文件位置。如果省略,JSON 将直接输出到 stdout。
  • -d, --diff - 返回自上次内部快照(上次运行布局时)以来发生更改的布局元素的列表,而不是完整的布局树。

示例:: android layout --output=./hierarchy.json

skills add

Android 技能是特殊说明,旨在帮助智能体更好地理解和执行遵循 Android 开发最佳实践和指南的特定模式。如需了解详情,请参阅 Android 技能简介

用法android skills add [--all] [--agent=<agent-name>] [--skill=<skill-name>]

说明: 将 Android 技能安装到所有检测到的智能体的技能目录中。如果您没有任何现有智能体目录,并且未指定特定智能体,则技能将安装到 ~/.gemini/antigravity/skills 中的 Gemini 和 Antigravity。

选项

  • --all - 一次添加所有 Android 技能。如果省略(且未指定 --skill),则只会安装 android-cli 技能。
  • --agent - 要为其安装技能的智能体列表,以逗号分隔。如果省略,则技能将安装到所有检测到的智能体。
  • --skill - 您要安装的技能名称。如果省略(且未指定 --all),则只会安装 android-cli 技能。

示例android skills add --agent='gemini' edge-to-edge

skills find

用法android skills find <string>

说明: 查找与给定字符串匹配的技能。

实参(必需)

  • string - 与技能说明匹配的字符串。

示例android skills find 'performance'

skills list

用法android skills list [--long]

说明: 列出可用的技能。

选项

  • --long - 输出每个技能的其他信息,包括技能的 说明以及已安装该技能的智能体。

skills remove

用法android skills remove [--agent] --skill=<skill-name>

说明: 移除技能。如果您未指定特定智能体,则技能将从所有智能体中移除。

实参(必需)

  • --skill - 要移除的技能的名称。

选项

  • --agent - 要从中移除技能的智能体列表,以逗号分隔。如果省略,则技能将从所有智能体中移除。

示例android skills remove --agent='gemini' --skill=edge-to-edge

screen capture

用法android screen capture [--output] [--annotate]

说明: 截取已连接设备的屏幕截图。

选项

  • -o, --output - 指定用于保存屏幕截图的文件位置。如果省略,原始 PNG 数据将直接输出到 stdout。
  • -a, --annotate - 在图片上检测到的所有界面元素 周围绘制带标签的边界框,以与 resolve 命令搭配使用。

示例android screen capture --output=ui.png

screen resolve

用法android screen resolve --screenshot=<path> --string=<string>

说明: 将使用 screen capture 截取的带注释的屏幕截图中的视觉标签转换为实际屏幕坐标 (x, y)。有助于编写点击元素的脚本,而无需手动计算其位置。

标志

  • --screenshot - 带注释的屏幕截图的路径。
  • --string - 包含至少一个占位符的字符串,该占位符对应于格式为 #<number> 的界面元素标签。#<number> 部分将被屏幕坐标替换。

示例

如果标签 5 的坐标为 (500, 1000),则命令

android screen resolve --screenshot=ui.png --string="input tap #5"

返回输出

input tap 500 1000

sdk install

用法android sdk install <package[@version]> [--beta] [--canary] [--force]

说明: 安装指定的 SDK 软件包。

实参(必需)

  • package[@version] - 要安装的软件包的列表,以空格分隔。如果未指定版本,则安装渠道(默认情况下为稳定版渠道)中软件包的最新版本。

选项

  • --beta - 包含 Beta 版软件包。
  • --canary - 包含 Canary 版软件包。
  • --force - 强制降级到旧版本。

示例

  • android sdk install platforms/android-34 build-tools/34.0.0 - 安装 Android SDK 平台 34 和 SDK 构建工具 34.0.0 软件包的最新版本。
  • android sdk install platforms/android-34@2 - 安装 Android SDK 平台 34 软件包的版本 2。
  • android sdk install --canary system-images/android-35/google_apis/x86_6 - 从 Canary 版渠道安装 Android 35 系统映像的最新版本。
  • android sdk install --force platforms/android-33@1 - 从稳定渠道恢复到 Android SDK 平台 33 软件包的版本 1 。

sdk list

用法android sdk list <package-pattern>

说明: 列出已安装和可用的 SDK 软件包。

实参(必需)

  • <package-pattern> - 按模式过滤软件包。支持正则表达式。

选项

  • --all - 显示所有已安装和可用的软件包。
  • --all-versions - 显示每个软件包的所有版本。
  • --beta - 包含 Beta 版软件包。
  • --canary - 包含 Canary 版软件包。

sdk remove

用法android sdk remove <package-name>

说明: 从 SDK 中移除软件包。

实参(必需)

  • <package-name> - 要移除的软件包的名称。

示例android sdk remove build-tools/36.1.0

run

用法android run [--debug] [--activity=<activity-name>] [--device=<serial-number>] [--type=<param>] --apks=<apk-paths>

说明: 将 Android 应用部署到已连接的设备或模拟器。它不会执行任何构建步骤;您必须提供要安装的 APK 文件的路径。

实参(必需)

  • --apks - 要安装的 APK 文件的路径列表,以英文逗号分隔,您 要安装。该路径相对于您当前在文件系统中的位置。

选项

  • --activity - APK 安装后要启动的 activity 的名称。如果有多个 activity,您必须指定一个要最初启动的 activity。
  • --debug - 以调试模式部署应用。以调试模式运行 应用后,您必须从 IDE(例如 Android Studio)或命令行工具连接调试器,才能开始调试。
  • --device - 目标设备或模拟器的序列号。仅在连接多个设备时才需要使用。如需查找设备序列号,请运行 adb devices
  • --type - 要启动的组件类型。如果您想直接启动后台服务而不是界面 activity,请使用此选项。 支持的类型:
    • ACTIVITY
    • WATCH_FACE
    • TILE
    • COMPLICATION
    • DECLARATIVE_WATCH_FACE

示例

  • android run --apks=app/build/outputs/apk/debug/app-debug.apk - 将 单个 APK 部署到默认设备。
  • android run --apks=base.apk,density-hdpi.apk,lang-en.apk - 将多个 APK 部署到默认设备。
  • android run --apks=app-debug.apk --type=SERVICE --activity=.sync.DataSyncService - 测试没有 activity 的服务。
  • android run --apks=app-debug.apk --device=emulator-5554 - 将 APK 部署到特定设备。

sdk update

用法: android sdk update [--beta] [--canary] [<package-name>]

说明: 将一个或所有软件包更新到渠道(默认情况下为稳定版渠道)中的最新版本。如果您未指定软件包,则所有软件包都将更新。

选项

  • <package-name> - 要更新的软件包的名称。
  • --beta - 包含 Beta 版软件包。
  • --canary - 包含 Canary 版软件包。
  • --force - 强制降级到旧版本。

示例

  • android sdk update - 检查并安装 SDK 中所有内容的更新。
  • android sdk update build-tools/34.0.0 - 将 Android SDK 构建 工具 34.0.0 软件包更新到稳定版渠道中的最新版本。
  • android sdk update --canary platforms/android-35 - 将 Android SDK 平台 35 软件包更新到 Canary 版渠道中的最新版本。

update

用法android update

说明: 更新 Android CLI。

-V, --version

说明: 显示 Android CLI 的当前版本。