android-emulator-qa について
adbを使ってエミュレーター上のAndroidアプリのフローをテストするQA・開発者向けスキルです。UIツリーに基づく操作に加え、スクリーンショットやログも取得します。
主な機能
- 01adbによるアプリの起動と操作
- 02UIツリーの確認とタップ座標の算出
- 03スクリーンショットとlogcatの取得
- 04ヘルパースクリプトによるUIツリー要約
活用シーン
- 01エミュレーターで画面遷移やUIの不具合を再現
- 02Androidの機能フローを検証
- 03QA中のスクリーンショットとログの保存
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ openai/ plugins --skill android-emulator-qaインストール後、Claude Code で/android-emulator-qaを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSE.txtagents/openai.yamlscripts/ui_pick.pyui_tree_summarize.py詳細
Android Emulator QA
adb を使用して起動、入力、UI ツリーの確認、スクリーンショットの撮影、ログの取得を行い、エミュレーターで Android アプリのフローを検証します。
使用する場面
- Android エミュレーターで機能のフローを QA します。
- adb の入力イベントで画面遷移を操作し、UI のバグを再現します。
- テスト中にスクリーンショットと logcat の出力を取得します。
クイックスタート
- エミュレーターを一覧表示し、シリアルを選択します:
adb devices
- 対象のバリアントをビルドしてインストールします:
./gradlew :<module>:install<BuildVariant> --console=plain --quiet- タスク名が不明な場合:
./gradlew tasks --all | rg install
- アプリを起動します:
- アクティビティを解決します:
adb -s <serial> shell cmd package resolve-activity --brief <package> - アプリを起動します:
adb -s <serial> shell am start -n <package>/<activity>
- アクティビティを解決します:
- 見た目を確認するため、スクリーンショットを撮影します:
adb -s <serial> exec-out screencap -p > /tmp/emu.png
adb 操作コマンド
- タップ(UI ツリーから取得した座標を使用します):
adb -s <serial> shell input tap <x> <y>
- スワイプ:
adb -s <serial> shell input swipe <x1> <y1> <x2> <y2>- 誤って戻るジェスチャーが発生するのを防ぐため、端を避けます(左右から約150~200 pxの位置から開始します)。
- テキスト:
adb -s <serial> shell input text "hello"
- 戻る:
adb -s <serial> shell input keyevent 4
- UI ツリーのダンプ:
adb -s <serial> exec-out uiautomator dump /dev/tty
座標の選択(UI ツリーのみ)
タップ座標は必ずスクリーンショットではなく、UI ツリーから算出します。
- 手順ごとのファイルに UI ツリーをダンプします:
adb -s <serial> exec-out uiautomator dump /dev/tty > /tmp/ui-settings.xml
- 対象ノードを見つけ、境界から中心座標(
x y)を算出します:- 境界の形式:
bounds="[x1,y1][x2,y2]" - ヘルパースクリプト:
python3 <path-to-skill>/scripts/ui_pick.py /tmp/ui-settings.xml "Settings"
- 境界の形式:
- ノードが見つからず、
scrollable要素がある場合:- スワイプして再度ダンプし、対象が見つからないと判断する前に、少なくとも1回は再検索します。
- 中心をタップします:
adb -s <serial> shell input tap <x> <y>
UI ツリーの概要(ヘルパー)
このヘルパーを使って、完全な XML を確認する前に、簡潔で読みやすい概要を作成します。
- UI ツリー全体をダンプします:
adb -s <serial> exec-out uiautomator dump /dev/tty > /tmp/ui-full.xml
- 要約を生成します:
python3 <path-to-skill>/scripts/ui_tree_summarize.py /tmp/ui-full.xml /tmp/ui-summary.txt
/tmp/ui-summary.txtを確認して候補となる対象を選び、その後、完全な XML から正確な境界を算出します。
ログ(logcat)
- ログを消去します:
adb -s <serial> logcat -c
- アプリプロセスのログをストリーミングします:
- PID を解決します:
adb -s <serial> shell pidof -s <package> - ストリーミングします:
adb -s <serial> logcat --pid <pid>
- PID を解決します:
- クラッシュバッファーのみ:
adb -s <serial> logcat -b crash
- ログを保存します:
adb -s <serial> logcat -d > /tmp/logcat.txt
パッケージのショートカット
- インストール済みパッケージを一覧表示します:
adb -s <serial> shell pm list packages
- 名前空間で絞り込みます:
adb -s <serial> shell pm list packages | rg <company_or_app_id>
- 起動前にアクティビティが解決されることを確認します:
adb -s <serial> shell cmd package resolve-activity --brief <package>
コメント
Markdown 対応