← Test Android AppsCONTENT HISTORY

Update to Test Android Apps

Snapshot Sep 30, 2026 · 23:18 UTC · version 0.1.2

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full 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