android-emulator-automation について
ADBとUIAutomatorでAndroidアプリを調査、起動、操作するエージェント向けスキルです。座標よりセマンティックセレクターを優先し、回帰UIテストの代わりではなく、再現可能なスモーク確認に使います。
主な機能
- 01指定アプリのインストールと起動
- 02UI階層の取得と確認
- 03テキストやリソースIDでコントロールを検索
- 04デバイス状態と起動完了の確認
活用シーン
- 01エミュレーターでAPKを起動して画面を確認
- 02セマンティックなUI操作を再現
- 03デバイスの準備状況を調べセレクターの問題を診断
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ krutikjain/ android-agent-skills --skill android-emulator-automationインストール後、Claude Code で/android-emulator-automationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/official-links.mdpatterns.mdscenarios.mdscripts/app_launcher.pycommon.pydevice_health.pynavigator.pyrun_examples.shscreen_mapper.py詳細
Android エミュレーターの自動化
使用するタイミング
- リクエストが Android エミュレーターの自動化、adb によるセマンティック UI 自動化、UIAutomator のダンプとタップに関する場合に、このスキルを使用します。
- 主な目的:セマンティックな ADB と UIAutomator のワークフローを使用して、エージェントから Android アプリを調査、起動、操作します。
- エージェントが APK を起動したり、現在の画面を調査したり、Espresso や Compose の UI テストを書かずに再現性のある操作を実行したりする必要がある場合に、このスキルを使用します。
- 対象範囲が広がる場合は、次のスキルに引き継ぎます。
android-testing-uiandroid-permissions-activity-results
ワークフロー
- 操作を試みる前に、Android SDK、
adb、対象のデバイスまたはエミュレーター、起動完了を確認します。 - リクエストの対象が適切なアーティファクトに紐づくよう、パッケージを明示して対象アプリをインストールまたは起動します。
- 現在の UI 階層をダンプし、生の座標よりも、テキスト、コンテンツの説明、リソース ID などのセマンティックセレクターを優先します。
- ワークフローを確認できる最小限の操作を実行し、状態の変化が重要な場合は画面を再度ダンプします。
- 自動化の手順が明らかになったら、長期的なリグレッションテストは UI テストに引き継ぎます。
ガードレール
- セマンティックセレクターをピクセル座標より優先します。座標を使うのは、UI ツリーに必要なメタデータがない場合に限ります。
- 自動化は調査やスモークテストのためのツールとして扱い、再現性のある UI テストの代替にはしません。
- 入力コマンドを実行する前に、デバイスの状態、パッケージ名、起動完了を確認します。
- 破壊的なシェルコマンドやデバイス全体の設定変更を避け、CI で安全に使えるスクリプトにします。
アンチパターン
- テキストやリソース ID が利用できるのに、座標をハードコードする。
- デバイスの起動が完了する前にエミュレーターコマンドを実行する。
- 不安定な単発の自動化を、安定した UI ワークフローの証拠として扱う。
- アプリのインストール、操作、ログの取得を、中間出力のない不透明なスクリプトにまとめる。
例
成功例
- シナリオ:Compose のフィクスチャをビルドし、エミュレーターにインストールして、現在の OrbitTasks 画面をダンプします。
- コマンド:
bash skills/android-emulator-automation/scripts/run_examples.sh
エッジケース
- シナリオ:プリインストールされたアプリを起動し、画面座標に頼らず、特定のセマンティックコントロールを対象にします。
- コマンド:
python3 skills/android-emulator-automation/scripts/navigator.py --find-text "Blocked" --tap
失敗からの復旧
- シナリオ:セレクターの不具合を追跡する前に、デバイスが検出可能であり、UIAutomator で階層をダンプできることを確認します。
- コマンド:
python3 skills/android-emulator-automation/scripts/device_health.py --json
完了チェックリスト
- 対象のパッケージ、デバイスのシリアル番号、現在の画面が明確になっています。
- 座標よりもセマンティックセレクターを優先しました。
- 自動化の手順をローカル開発環境と CI で再現できます。
- ワークフローにリグレッションテストが必要な場合、リクエストを UI テストに引き継ぎます。
公式リファレンス
コメント
Markdown 対応