Android CLI の概要

Android CLI は、任意のツールを使用して Android 向けに簡単に効率よくビルドできるコマンドライン インターフェースです。エージェント ファーストのワークフローのコア開発コンピテンシーを標準化し、より効果的に開発するために必要な公式ツール、スキル、知識へのエントリ ポイントを提供します。また、Android 開発の分散化が進む中、CI、メンテナンス、その他のスクリプト化された自動化を効率化することもできます。

たとえば、エージェントやスクリプトは CLI を使用して、次のようなタスクを実行できます。

  • 環境設定を自動化する
  • テンプレートから新しいプロジェクトをスキャフォールディングする
  • ターミナルから仮想デバイスを直接管理する
  • ジャーニーでアプリをテストする

Android CLI を使用すると、エージェントは Android スキルと特殊な Android ナレッジベースにアクセスして、プロジェクトで Android 推奨パターンとベスト プラクティスが適用されるようにすることができます。

Android CLI をインストールする

Android CLI をインストールする手順は次のとおりです。

  1. Android CLI をダウンロードします

  2. 最新バージョンを使用していることを確認するには、Android CLI を更新します。

    android update
    

Android CLI がマシンにすでにインストールされているかどうかを確認するには、which android または command -v android を実行します。パスが返された場合は、インストールされています。

エージェント向けに設定する

エージェントが Android CLI を理解して使用できるようにするには、init を実行して android-cli スキルをインストールします。

android init

収集されるデータ

Android CLI は、ツールの基本的な使用状況に関するデータを収集します。収集するデータは次のとおりです。

  • android コマンドとサブコマンド(android runandroid create など)の呼び出し。
  • 使用された位置引数以外の引数またはオプションの名前(--sdk--version など)。
  • Android CLI で管理される固定の事前定義されたシステム オプションのセットにマッピングされる位置引数とフラグ値。たとえば、medium_phonelarge_desktop などのエミュレータ テンプレート名、GEMINICLAUDECODEX などのエージェント名が収集されます。
  • スタック トレースと例外メッセージ。プライバシーを保護するため、収集前に識別情報が匿名化されます。

以下は、Google が収集しないデータの例です。

  • コマンドの実行時に CLI のレスポンスを収集することはありません。
  • ユーザーが作成した入力や、CLI に渡された外部識別子(特定の Maven 座標、ローカル ファイルパス、カスタム プロジェクト名など)は収集されません。たとえば、コマンド android create --name=com.company.internal.app が実行された場合、--name 引数を使用して android create が実行されたことを記録しますが、値 com.company.internal.app は保存しません。

既知の問題

  • Windows の android emulator コマンドは現在無効になっています。
  • 現在、Windows PowerShell からの Android CLI のダウンロードはサポートされていません。

問題が発生した場合やフィードバックがある場合は、バグを報告してください。

Android CLI を構成する

Android CLI を呼び出すたびにフラグとオプションを自動的に適用する .androidrc ファイルを作成します。オペレーティング システムに応じて、次の場所にファイルを保存します。

  • macOS と Linux: ~/.androidrc
  • Windows: %USERPROFILE%\.androidrc

ファイルに自動的に適用するフラグを 1 行に 1 つずつ追加します。

たとえば、Android CLI で特定の Android SDK を常にデフォルトで使用するようにするには、ファイルに --sdk フラグを追加します。

--sdk=<path-to-sdk>

グローバル オプション

これらは、他の 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 - 実際にファイルを保存せずに、プロジェクト作成プロセス全体をシミュレートします。たとえば、ドライランを実行して、さまざまなテンプレートの動作を確認してから、1 つのテンプレートを commit できます。
  • --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 プロジェクトを分析して、説明的なメタデータを生成します。このコマンドは、ビルド ターゲットとそれに対応する出力アーティファクトの場所(APK ファイルなど)を含む、プロジェクトの構造を詳細に記述した JSON ファイルのパスを特定して出力します。この情報により、他のツールやコマンドはビルド アーティファクトを効率的に見つけることができます。

選択肢:

  • --project_dir - 説明するプロジェクト ディレクトリ。省略すると、現在のディレクトリが使用されます。

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

docs

使用方法:

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

説明: android docs コマンドは、CLI から Android ナレッジベースに直接アクセスするための 2 段階のプロセスです。まず、search コマンドを使用して、クエリに関連するドキュメントを検索します。検索結果には kb:// で始まる特別な URL が含まれます。この URL を 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]

説明: アクティブな Android アプリ(実機またはエミュレータ経由で接続)の UI レイアウトを JSON 形式で返します。

選択肢:

  • -p, --pretty - 人間が読みやすいように、インデントと改行を使用して JSON 出力をフォーマットします。
  • -o, --output - レイアウト ツリーを保存するファイルの場所を指定します。省略すると、JSON は stdout に直接出力されます。
  • -d, --diff - レイアウト ツリー全体ではなく、前回の内部スナップショットの取得以降(レイアウトが最後に実行されたとき)に変更されたレイアウト要素のみのリストを返します。

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

run

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

説明: 接続されているデバイスまたはエミュレータに Android アプリをデプロイします。ビルドステップは実行されません。インストールする APK ファイルのパスを指定する必要があります。

引数(必須):

  • --apks - インストールする APK ファイルのパスのカンマ区切りのリスト。パスは、ファイル システム内の現在の場所を基準とする相対パスです。

選択肢:

  • --activity - APK のインストール後に起動するアクティビティの名前。複数のアクティビティがある場合は、最初に起動するアクティビティを 1 つ指定する必要があります。
  • --debug - デバッグモードでアプリをデプロイします。デバッグモードでアプリを実行したら、Android Studio などの IDE またはコマンドライン ツールからデバッガを接続して、デバッグを開始する必要があります。
  • --device - 対象デバイスまたはエミュレータのシリアル番号。複数のデバイスが接続されている場合のみ必要です。デバイスのシリアル番号を確認するには、adb devices を実行します。
  • --type - 起動するコンポーネント タイプ。UI アクティビティではなく、バックグラウンド サービスを直接開始する場合に使用します。サポートされているタイプ:
    • 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 - アクティビティなしでサービスをテストします。
  • android run --apks=app-debug.apk --device=emulator-5554 - 特定のデバイスに APK をデプロイします。

screen capture

使用方法: android screen capture [--output] [--annotate]

説明: 接続されたデバイスのスクリーンショットをキャプチャします。

選択肢:

  • -o, --output - スクリーンショットを保存するファイルの場所を指定します。省略すると、未加工の PNG データが stdout に直接出力されます。
  • -a, --annotate - resolve コマンドで使用するために、画像内で検出されたすべての UI 要素の周りにラベル付きの境界ボックスを描画します。

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

screen resolve

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

説明: screen capture を使用してキャプチャされたアノテーション付きスクリーンショットの視覚ラベルを、実際の画面座標(x、y)に変換します。要素の位置を手動で計算しなくても、要素のクリックをスクリプト化する場合に便利です。

Flags:

  • --screenshot - 注釈付きスクリーンショットのパス。
  • --string - #<number> 形式の UI 要素ラベルに対応するプレースホルダを 1 つ以上含む文字列。#<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 - ベータ版パッケージを含めます。
  • --canary - カナリア パッケージを含めます。
  • --force - 古いバージョンへのダウングレードを強制します。

例:

  • android sdk install platforms/android-34 build-tools/34.0.0 - 安定版チャンネルから Android SDK Platform 34 と SDK Built Tools 34.0.0 パッケージの最新バージョンをインストールします。
  • android sdk install platforms/android-34@2 - Android SDK Platform 34 パッケージのバージョン 2 をインストールします。
  • android sdk install --canary system-images/android-35/google_apis/x86_6 - カナリア チャンネルから Android 35 システム イメージの最新バージョンをインストールします。
  • android sdk install --force platforms/android-33@1 - 安定版チャンネルの Android SDK Platform 33 パッケージのバージョン 1 に戻します。

sdk list

使用方法: android sdk list <package-pattern>

説明: インストール済みで利用可能な SDK パッケージのリストを表示します。

引数(必須):

  • <package-pattern> - パターンでパッケージをフィルタします。正規表現をサポートします。

選択肢:

  • --all - インストール済みで利用可能なパッケージをすべて表示します。
  • --all-versions - 各パッケージのすべてのバージョンを表示します。
  • --beta - ベータ版パッケージを含めます。
  • --canary - カナリア パッケージを含めます。

sdk remove

使用方法: android sdk remove <package-name>

説明: SDK からパッケージを削除します。

引数(必須):

  • <package-name> - 削除するパッケージの名前。

例: android sdk remove build-tools/36.1.0

sdk update

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

説明: チャンネル(デフォルトは安定版チャンネル)の 1 つまたはすべてのパッケージを最新バージョンに更新します。パッケージを指定しない場合、すべてのパッケージが更新されます。

選択肢:

  • <package-name> - 更新するパッケージの名前。
  • --beta - ベータ版パッケージを含めます。
  • --canary - カナリア パッケージを含めます。
  • --force - 古いバージョンへのダウングレードを強制します。

例:

  • android sdk update - SDK のすべての更新を確認してインストールします。
  • android sdk update build-tools/34.0.0 - Android SDK Build Tools 34.0.0 パッケージを安定版チャンネルの最新バージョンに更新。
  • android sdk update --canary platforms/android-35 - Android SDK プラットフォーム 35 パッケージをカナリア チャンネルの最新バージョンに更新します。

skills add

Android スキルは、Android 開発に関するベスト プラクティスとガイダンスに沿った特定のパターンをエージェントがよりよく理解し、実行できるように設計された特別な手順です。詳しくは、Android スキルの概要をご覧ください。

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

説明: 検出されたすべてのエージェントのスキル ディレクトリに Android スキルをインストールします。既存のエージェント ディレクトリがなく、特定のエージェントを指定しない場合、スキルは ~/.gemini/antigravity/skills の Gemini と Antigravity にインストールされます。Android スキルがすでにインストールされている場合は、skills add によってスキルが最新バージョンに更新されます。

選択肢:

  • --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

studio check

studio コマンドを使用すると、ユーザーまたは AI エージェントが Android Studio のアクティブなインスタンスを操作できます。実行中のインスタンスに接続すると、IDE の機能を使用して、ファイルの分析、シンボルの宣言と使用状況の検索、Compose プレビューのレンダリング、依存関係のバージョンの検索を行うことができます。

使用方法: android studio check

説明: 実行中の Android Studio インスタンスのステータスを確認し、開いているプロジェクトを一覧表示します。このコマンドを最初に実行して、CLI と IDE の間の接続を確認し、接続する PID とプロジェクトを選択します(複数ある場合)。

出力例:

接続されている場合、出力には実行中の Android Studio インスタンスの PID、バージョン、開いているプロジェクトのステータスが一覧表示されます。

pid: 32942
version: Android Studio Quail
Projects:
    READY     MyApplication /Users/username/AndroidStudioProjects/MyApplication

studio analyze-file

使用方法: android studio analyze-file [--pid=<pid>] [--project=<project>] <path>

説明: Android Studio のファイルを IDE の組み込みインスペクション エンジンを使用して分析し、エラー、警告、lint を検出します。

引数(必須):

  • <path> - 分析する Kotlin ファイルまたは Java ファイルのパス。

選択肢:

  • --pid=<pid> - 接続する特定の Android Studio インスタンスの PID(複数ある場合)。
  • --project=<project> - 複数のプロジェクトが開いている場合に、クエリする Android Studio で開いているプロジェクトの名前。プロジェクト ディレクトリ内から analyze-file コマンドを実行すると、デフォルトでそのプロジェクトが使用されます。

例:

android studio analyze-file \
  --project=MyApplication \
  /Users/username/AndroidStudioProjects/MyApplication/app/src/main/java/com/example/myapp/MainActivity.kt

studio find-declaration

使用方法: android studio find-declaration [--short] [--context-file=<path>] [--pid=<pid>] [--project=<project>] <symbol>

説明: セマンティック解決を使用して、プロジェクト全体でシンボル(クラス、メソッド、変数、フィールド、定数、Android リソース)の正確な宣言サイトを検索します。

引数(必須):

  • <symbol> - 宣言を検索するコード シンボルの名前。

選択肢:

  • --context-file=<path> - シンボルへの参照を含むファイルへのオプションのパス。コンテキスト ファイルを提供すると、インポートとスコープが提供されるため、曖昧なシンボルやオーバーロードされたシンボルを解決できます。
  • --short - 出力を簡略化して、ファイルの場所と行の一致のみを表示します。
  • --pid=<pid> - 接続する特定の Android Studio インスタンスの PID(複数ある場合)。
  • --project=<project> - 複数のプロジェクトが開いている場合に、クエリする Android Studio で開いているプロジェクトの名前。プロジェクト ディレクトリ内から find-declaration コマンドを実行すると、デフォルトでそのプロジェクトが使用されます。

例:

android studio find-declaration --short HotelDetailScreen

studio find-usages

使用方法: android studio find-usages [--short] [--pid=<pid>] [--project=<project>] <symbol>

説明: セマンティック分析を使用して、プロジェクト全体でシンボルのすべての参照と使用箇所を検索します。

引数(必須):

  • <symbol> - 使用箇所を検索するシンボルの名前。

選択肢:

  • --short - 出力を簡略化して、一致したファイルの場所のみを表示します。
  • --pid=<pid> - 接続する特定の Android Studio インスタンスの PID(複数ある場合)。
  • --project=<project> - 複数のプロジェクトが開いている場合に、クエリする Android Studio で開いているプロジェクトの名前。プロジェクト ディレクトリ内からこのコマンドを実行すると、デフォルトでそのプロジェクトが使用されます。

例:

android studio find-usages --short HotelDetailScreen

studio open-file

使用方法: android studio open-file [--pid=<pid>] [--project=<project>] <path>

説明: Android Studio のアクティブなエディタ ウィンドウでファイルを直接開きます。

引数(必須):

  • <path> - 開くファイルのパス。プロジェクトのルート ディレクトリに対する相対パスとして指定することも、絶対パスとして指定することもできます。

選択肢:

  • --pid=<pid> - 接続する特定の Android Studio インスタンスの PID(複数ある場合)。
  • --project=<project> - 複数のプロジェクトが開いている場合に、クエリする Android Studio で開いているプロジェクトの名前。プロジェクト ディレクトリ内から open-file コマンドを実行すると、そのプロジェクトがデフォルトで使用されます。

例:

android studio open-file app/src/main/java/com/example/myapp/ui/DetailScreen.kt

studio render-compose-preview

使用方法: android studio render-compose-preview [--print-semantics] [--output-image-file=<filename>] [--pid=<pid>] [--project=<project>] <path> <composable>

説明: Jetpack Compose UI プレビューをレンダリングし、必要に応じてレイアウト セマンティクス ツリーを返します。これは、ビジュアル テストや、AI エージェントが UI レイアウトを操作できるようにする場合に役立ちます。

引数(必須):

  • <path> - Compose プレビューを含む Kotlin ファイルのパス。
  • <composable> - コンポーザブル プレビュー関数の名前(@Preview でマーク)。

選択肢:

  • --output-image-file=<filename> - レンダリングされた PNG 画像の書き込み先となるファイル名を指定します。省略すると、一時ファイルが作成されます。
  • --print-semantics - true の場合、レンダリングされた Compose プレビューのアクセシビリティ セマンティクス ツリーを JSON 形式で出力します。これにより、エージェントは UI の構造とインタラクティブ要素を解析できます。
  • --pid=<pid> - 接続する特定の Android Studio インスタンスの PID(複数ある場合)。
  • --project=<project> - 複数のプロジェクトが開いている場合に、クエリする Android Studio で開いているプロジェクトの名前。プロジェクト ディレクトリ内から render-compose-preview コマンドを実行すると、そのプロジェクトがデフォルトで使用されます。

例:

android studio render-compose-preview \
  --output-image-file=preview_hotel.png \
  --print-semantics \
  app/src/main/java/com/example/myapp/ui/DetailScreen.kt \
  HotelDetailScreenPreview

studio version-lookup

使用方法: android studio version-lookup [--pid=<pid>] [--project=<project>] <artifacts...>

説明: Google Maven などのリポジトリで、一般的な依存関係、Android プラットフォーム、SDK ツールの最新の利用可能なバージョンを検索します。これにより、依存関係のバージョンの手動チェックに代わるプログラムによる方法が提供されます。

引数(必須):

  • <artifacts...> - 識別子のスペース区切りリスト。1 つのコマンドで複数のアーティファクトをクエリできます。サポートされている識別子は次のとおりです。
    • Maven ライブラリ: groupId:artifactId 表記(例: androidx.window:window)。
    • Gradle プラグイン: プラグイン ID(例: com.android.application)。
    • キーワード:
      • gradle(Gradle ビルドツール)
      • studio(Android Studio)
      • agp(Android Gradle プラグイン)
      • ndk(Android NDK)
      • sdk(Android SDK)
      • emulator(Android エミュレータ)
      • adb(Android Debug Bridge)
      • compose(Jetpack Compose BOM)
      • kotlin(Kotlin ランタイムとコンパイラ)
      • android(Android OS バージョン)
      • platform-tools(Android SDK Platform-Tools)
      • cmdline-tools(Android SDK コマンドライン ツール)
      • build-tools(Android SDK Build-Tools)

選択肢:

  • --pid=<pid> - 接続する特定の Android Studio インスタンスの PID(複数ある場合)。
  • --project=<project> - 複数のプロジェクトが開いている場合に、クエリする Android Studio で開いているプロジェクトの名前。プロジェクト ディレクトリ内から version-lookup コマンドを実行すると、デフォルトでそのプロジェクトが使用されます。

例:

android studio version-lookup \
  androidx.compose.ui:ui \
  com.android.application \
  agp \
  kotlin

update

使用方法: android update

説明: Android CLI を更新します。

-V, --version

説明: Android CLI の現在のバージョンを表示します。