Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
openai avatar

Android Emulator Qa

  • 124 installs
  • 4.9k repo stars
  • Updated July 14, 2026
  • openai/plugins

android-emulator-qa is an agent skill for Android emulator QA using adb UI trees, Gradle installs, screenshots, and logcat.

About

The android-emulator-qa skill documents a repeatable Android emulator testing workflow for mobile apps. It starts by listing devices with adb devices, selecting a serial, and optionally cold-booting an AVD when no emulator is connected. Build and install steps run Gradle install tasks such as ./gradlew :module:installBuildVariant, resolve the launch activity with adb shell cmd package resolve-activity, and start the app with am start. Visual verification captures screenshots via adb exec-out screencap. Interaction commands cover tap, swipe away from screen edges, text input, back keyevents, and uiautomator UI tree dumps. Coordinate picking always derives centers from UI tree bounds using the bundled ui_pick.py helper, re-dumping after scrollable searches before concluding a target is missing. A ui_tree_summarize.py helper produces compact skeletons before reading full XML. Logcat guidance clears buffers, streams per-process logs by pid, reads crash buffers, and saves dumps for later review. Package shortcuts filter installed apps and confirm activities before launch. Use for Android emulator QA, UI automation, and crash investigation.

  • Lists adb devices and cold-boots AVDs when no emulator is running.
  • Gradle install tasks plus resolve-activity and am start launch flow.
  • UI tree coordinate picking via ui_pick.py instead of screenshots.
  • adb tap, swipe, text, back, and uiautomator dump commands documented.
  • Logcat per-process streaming, crash buffer, and save workflows.

Android Emulator Qa by the numbers

  • 124 all-time installs (skills.sh)
  • +22 installs in the week ending Jul 26, 2026 (Skillselion tracking)
  • Ranked #542 of 1,039 Mobile Development skills by installs in the Skillselion catalog
  • Data as of Aug 4, 2026 (Skillselion catalog sync)
At a glance

android-emulator-qa capabilities & compatibility

Capabilities
emulator device selection and avd boot · gradle install and activity launch · ui tree coordinate derivation · adb input and screenshot capture · logcat streaming and crash buffer reads
Use cases
testing
Platforms
macOS · Linux
From the docs

What android-emulator-qa says it does

Always compute tap coordinates from the UI tree, not screenshots.
SKILL.md
npx skills add https://github.com/openai/plugins --skill android-emulator-qa

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs124
repo stars4.9k
Last updatedJuly 14, 2026
Repositoryopenai/plugins

How do I QA an Android app on an emulator with reliable UI taps and log capture?

Run Android emulator QA with adb UI tree taps, Gradle installs, screenshots, and filtered logcat for mobile app verification.

Who is it for?

Developers running Android emulator QA who need adb UI tree automation and logcat workflows.

Skip if: Skip for iOS simulators, physical device farms, or backend-only testing without mobile UI.

When should I use this skill?

User tests an Android app on an emulator, taps UI elements, or captures mobile crash logs.

What you get

App built, installed, launched, exercised via UI-tree taps, screenshot verified, and logs captured.

Files

SKILL.mdMarkdownGitHub ↗

Android Emulator QA

Validate Android app flows in an emulator using adb for launch, input, UI-tree inspection, screenshots, and logs.

When to use

  • QA a feature flow in an Android emulator.
  • Reproduce UI bugs by driving navigation with adb input events.
  • Capture screenshots and logcat output while testing.

Quick start

1) List emulators and pick a serial:

  • adb devices

2) Build and install the target variant:

  • ./gradlew :<module>:install<BuildVariant> --console=plain --quiet
  • If unsure about task names: ./gradlew tasks --all | rg install

3) Launch the app:

  • Resolve activity: adb -s <serial> shell cmd package resolve-activity --brief <package>
  • Start app: adb -s <serial> shell am start -n <package>/<activity>

4) Capture a screenshot for visual verification:

  • adb -s <serial> exec-out screencap -p > /tmp/emu.png

adb control commands

  • Tap (use UI tree-derived coordinates):
  • adb -s <serial> shell input tap <x> <y>
  • Swipe:
  • adb -s <serial> shell input swipe <x1> <y1> <x2> <y2>
  • Avoid edges (start ~150-200 px from left/right) to reduce accidental back gestures.
  • Text:
  • adb -s <serial> shell input text "hello"
  • Back:
  • adb -s <serial> shell input keyevent 4
  • UI tree dump:
  • adb -s <serial> exec-out uiautomator dump /dev/tty

Coordinate picking (UI tree only)

Always compute tap coordinates from the UI tree, not screenshots.

1) Dump the UI tree to a step-specific file:

  • adb -s <serial> exec-out uiautomator dump /dev/tty > /tmp/ui-settings.xml

2) Find the target node and derive center coordinates (x y) from bounds:

  • Bounds format: bounds="[x1,y1][x2,y2]"
  • Helper script:
  • python3 <path-to-skill>/scripts/ui_pick.py /tmp/ui-settings.xml "Settings"

3) If the node is missing and there are scrollable elements:

  • swipe, re-dump, and re-search at least once before concluding the target is missing.

4) Tap the center:

  • adb -s <serial> shell input tap <x> <y>

UI tree skeleton (helper)

Use this helper to create a compact, readable overview before inspecting full XML.

1) Dump full UI tree:

  • adb -s <serial> exec-out uiautomator dump /dev/tty > /tmp/ui-full.xml

2) Generate summary:

  • python3 <path-to-skill>/scripts/ui_tree_summarize.py /tmp/ui-full.xml /tmp/ui-summary.txt

3) Review /tmp/ui-summary.txt to choose likely targets, then compute exact bounds from full XML.

Logs (logcat)

1) Clear logs:

  • adb -s <serial> logcat -c

2) Stream app process logs:

  • Resolve pid: adb -s <serial> shell pidof -s <package>
  • Stream: adb -s <serial> logcat --pid <pid>

3) Crash buffer only:

  • adb -s <serial> logcat -b crash

4) Save logs:

  • adb -s <serial> logcat -d > /tmp/logcat.txt

Package shortcuts

  • List installed packages:
  • adb -s <serial> shell pm list packages
  • Filter to your namespace:
  • adb -s <serial> shell pm list packages | rg <company_or_app_id>
  • Confirm the activity resolves before launching:
  • adb -s <serial> shell cmd package resolve-activity --brief <package>

Related skills

FAQ

How should I pick tap coordinates on Android?

Dump the UI tree with uiautomator and compute center bounds using the ui_pick.py helper, not screenshots.

How do I stream app-specific logcat?

Resolve the package pid with pidof then run adb logcat --pid for that process.

Is android-emulator-qa safe to install?

Review the Security Audits panel on this page before installing in production.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.