← Test Android AppsCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Test Android Apps
Snapshot Sep 30, 2026 · 23:18 UTC · version 0.1.2
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"name": "android-emulator-qa",
"description": "Use when validating Android feature flows in an emulator with adb-driven launch, input, UI-tree inspection, screenshots, and logcat capture.",
"included_files": [
{
"relative_path": "LICENSE.txt",
"size_in_bytes": 10776
},
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 408
},
{
"relative_path": "scripts/ui_pick.py",
"size_in_bytes": 1865
},
{
"relative_path": "scripts/ui_tree_summarize.py",
"size_in_bytes": 3318
}
],
"skill_md_contents": "---\nname: \"android-emulator-qa\"\ndescription: \"Use when validating Android feature flows in an emulator with adb-driven launch, input, UI-tree inspection, screenshots, and logcat capture.\"\n---\n\n# Android Emulator QA\n\nValidate Android app flows in an emulator using adb for launch, input, UI-tree inspection, screenshots, and logs.\n\n## When to use\n- QA a feature flow in an Android emulator.\n- Reproduce UI bugs by driving navigation with adb input events.\n- Capture screenshots and logcat output while testing.\n\n## Quick start\n1) List emulators and pick a serial:\n - `adb devices`\n2) Build and install the target variant:\n - `./gradlew :<module>:install<BuildVariant> --console=plain --quiet`\n - If unsure about task names: `./gradlew tasks --all | rg install`\n3) Launch the app:\n - Resolve activity: `adb -s <serial> shell cmd package resolve-activity --brief <package>`\n - Start app: `adb -s <serial> shell am start -n <package>/<activity>`\n4) Capture a screenshot for visual verification:\n - `adb -s <serial> exec-out screencap -p > /tmp/emu.png`\n\n## adb control commands\n- Tap (use UI tree-derived coordinates):\n - `adb -s <serial> shell input tap <x> <y>`\n- Swipe:\n - `adb -s <serial> shell input swipe <x1> <y1> <x2> <y2>`\n - Avoid edges (start ~150-200 px from left/right) to reduce accidental back gestures.\n- Text:\n - `adb -s <serial> shell input text \"hello\"`\n- Back:\n - `adb -s <serial> shell input keyevent 4`\n- UI tree dump:\n - `adb -s <serial> exec-out uiautomator dump /dev/tty`\n\n## Coordinate picking (UI tree only)\nAlways compute tap coordinates from the UI tree, not screenshots.\n\n1) Dump the UI tree to a step-specific file:\n - `adb -s <serial> exec-out uiautomator dump /dev/tty > /tmp/ui-settings.xml`\n2) Find the target node and derive center coordinates (`x y`) from bounds:\n - Bounds format: `bounds=\"[x1,y1][x2,y2]\"`\n - Helper script:\n - `python3 <path-to-skill>/scripts/ui_pick.py /tmp/ui-settings.xml \"Settings\"`\n3) If the node is missing and there are `scrollable` elements:\n - swipe, re-dump, and re-search at least once before concluding the target is missing.\n4) Tap the center:\n - `adb -s <serial> shell input tap <x> <y>`\n\n## UI tree skeleton (helper)\nUse this helper to create a compact, readable overview before inspecting full XML.\n\n1) Dump full UI tree:\n - `adb -s <serial> exec-out uiautomator dump /dev/tty > /tmp/ui-full.xml`\n2) Generate summary:\n - `python3 <path-to-skill>/scripts/ui_tree_summarize.py /tmp/ui-full.xml /tmp/ui-summary.txt`\n3) Review `/tmp/ui-summary.txt` to choose likely targets, then compute exact bounds from full XML.\n\n## Logs (logcat)\n1) Clear logs:\n - `adb -s <serial> logcat -c`\n2) Stream app process logs:\n - Resolve pid: `adb -s <serial> shell pidof -s <package>`\n - Stream: `adb -s <serial> logcat --pid <pid>`\n3) Crash buffer only:\n - `adb -s <serial> logcat -b crash`\n4) Save logs:\n - `adb -s <serial> logcat -d > /tmp/logcat.txt`\n\n## Package shortcuts\n- List installed packages:\n - `adb -s <serial> shell pm list packages`\n- Filter to your namespace:\n - `adb -s <serial> shell pm list packages | rg <company_or_app_id>`\n- Confirm the activity resolves before launching:\n - `adb -s <serial> shell cmd package resolve-activity --brief <package>`\n"
}SHA-256: a63c2a0eaff0c7e15afa7de34754a62432fdd26b4e717b5b86f533922a9ed5cd