Skip to content
android-emulator-skill logo

Android Emulator Skill

android-emulator-skill

Production-ready scripts for Android app testing, building, and automation. Provides semantic UI navigation, build automation, accessibility testing, and emulator lifecycle management. Optimized for AI agents with minimal token output. Android equivalent of ios-simulator-skill.

SKILL.md

Full skill instructions

Android Emulator Skill

Build, test, and automate Android applications using accessibility-driven navigation and structured data instead of pixel coordinates.

Quick Start

# 1. Launch app
python scripts/​app_launcher.py --launch com.example.app

# 2. Map screen to see elements
python scripts/​screen_mapper.py

# 3. Tap button
python scripts/​navigator.py --find-text "Login" --tap

# 4. Enter text
python scripts/​navigator.py --find-type EditText --enter-text "[email protected]"

# 5. Run accessibility audit
python scripts/​accessibility_audit.py

All scripts support --help for detailed options and --json for machine-readable output.

Status: Feature Complete (v0.1.0)

Completed Components ✓ (20 scripts)

Core Utilities (3 modules)
  1. common/​device_utils.py - ADB command building and device detection
  2. common/​screenshot_utils.py - Screenshot capture and processing
  3. common/​cache_utils.py - Progressive disclosure cache system
App Management (1 script)
  1. app_launcher.py - App lifecycle management
    • Launch apps by package name
    • Terminate apps
    • Install/​uninstall APKs
    • Deep link navigation
    • List installed packages
    • Check app state
    • Options: --launch, --terminate, --install, --uninstall, --open-url, --list, --state, --json
Device Lifecycle (5 scripts) ✓ COMPLETE
  1. emulator_boot.py - Boot emulators with optional readiness verification

    • Boot by AVD name
    • Wait for device ready with timeout
    • Batch boot operations
    • Headless mode support
    • Options: --avd, --wait-ready, --timeout, --headless, --list-avds, --json
  2. emulator_shutdown.py - Gracefully shutdown emulators

    • Shutdown by serial number
    • Optional verification of shutdown completion
    • Batch shutdown operations
    • Options: --serial, --verify, --timeout, --all, --json
  3. emulator_create.py ⭐ NEW - Create AVDs dynamically

    • Create by device type and API level
    • List available device definitions
    • List available system images
    • Options: --device, --api, --name, --abi, --variant, --list-devices, --list-images, --json
  4. emulator_delete.py ⭐ NEW - Delete AVDs permanently

    • Delete by AVD name
    • List available AVDs
    • Options: --name, --list, --json
  5. emulator_erase.py ⭐ NEW - Factory reset AVDs

    • Wipe user data without deleting AVD
    • Preserve AVD configuration
    • Options: --name, --force, --list, --json
Build & Development (2 scripts) ✓ COMPLETE
  1. build_and_test.py ⭐ NEW - Gradle build automation

    • Build with minimal token output
    • Clean builds
    • Run tests
    • Parse errors and warnings
    • Options: --project, --variant, --clean, --test, --verbose, --json
  2. log_monitor.py ⭐ NEW - Real-time logcat monitoring

    • Filter by app package
    • Filter by severity (error/​warning/​info/​debug)
    • Smart deduplication
    • Duration-based or follow mode
    • Save logs to file
    • Options: --app, --serial, --severity, --follow, --duration, --output, --clear, --verbose, --json
Navigation & Interaction (4 scripts)
  1. screen_mapper.py - Analyze current screen and list interactive elements

    • Count elements by type
    • List buttons, EditTexts, etc.
    • Token-efficient summaries
    • Options: --serial, --verbose, --json, --list
  2. navigator.py - Find and interact with elements semantically

    • Find by text, type, resource ID
    • Tap, enter text, get bounds
    • Fuzzy matching support
    • Options: --find-text, --find-type, --find-id, --tap, --enter-text, --list, --serial, --json
  3. gesture.py - Perform swipes, scrolls, long press

    • Directional swipes
    • Custom swipe coordinates
    • Scroll and long press
    • Options: --swipe, --from-edge, --duration, --long-press, --scroll, --serial, --json
  4. keyboard.py - Text input and hardware buttons

    • Type text
    • Press hardware keys (back, home, enter, etc.)
    • Clear text
    • Options: --text, --key, --button, --clear, --serial, --json
Testing & Analysis (5 scripts) ✓ COMPLETE
  1. accessibility_audit.py ⭐ NEW - WCAG compliance checking

    • Missing content descriptions
    • Touch target size verification
    • EditText hint checking
    • Image accessibility
    • Categorize by severity (critical/​warning/​info)
    • Save reports (JSON + Markdown)
    • Options: --serial, --output, --verbose, --json
  2. visual_diff.py - Compare screenshots for visual changes

    • Pixel-perfect comparison
    • Highlight differences
    • Generate diff images
    • Options: --image1, --image2, --output, --threshold, --json
  3. test_recorder.py ⭐ NEW - Automatically document test execution

    • Record test steps with screenshots
    • Capture UI hierarchy per step
    • Generate test reports (JSON + Markdown)
    • Inline mode for vision-based testing
    • Options: --test-name, --output, --serial, --inline, --size, --app-name
  4. app_state_capture.py ⭐ NEW - Complete debugging snapshots

    • Capture screenshot + UI hierarchy + logs + app info
    • Create timestamped snapshots
    • All-in-one debugging artifact
    • Options: --package, --output, --serial, --logs, --no-logs, --screenshot-size, --json
Advanced Testing & Permissions (4 scripts) ✓ COMPLETE
  1. privacy_manager.py ⭐ NEW - App permission management

    • Grant/​revoke permissions
    • List app permissions
    • Support for 20+ permission types
    • Batch operations
    • Options: --grant, --revoke, --list, --package, --serial, --list-permissions, --json
  2. clipboard.py ⭐ NEW - Clipboard management

    • Copy text to device clipboard
    • Test paste functionality
    • Options: --copy, --paste, --serial, --json
  3. status_bar.py ⭐ NEW - Status bar control

    • Set battery level and charging state
    • Set WiFi/​mobile signal strength
    • Set time display (for consistent screenshots)
    • Demo mode support
    • Options: --battery, --charging, --wifi, --mobile, --time, --reset, --serial, --json
  4. push_notification.py ⭐ NEW - Push notification simulation

    • Send test notifications
    • List notification channels
    • Multiple delivery methods
    • Options: --package, --title, --message, --id, --data, --list-channels, --method, --serial, --json

Android vs iOS Mapping

iOS ToolAndroid EquivalentStatus
xcrun simctladb / avdmanager / emulator✓ Complete
IDBadb shell uiautomator / input✓ Complete
iOS SimulatorAndroid Emulator✓ Complete
xcodebuildGradle wrapper✓ Complete
Accessibility treeUI hierarchy dump✓ Complete
simctl privacypm grant/​revoke✓ Complete
xcresultGradle test reports✓ Complete

Script Categories

🚀 Essential (Use Daily)

  • app_launcher.py - Launch/​terminate apps
  • screen_mapper.py - Understand current screen
  • navigator.py - Interact with UI elements
  • gesture.py / keyboard.py - User input

🔧 Development

  • build_and_test.py - Build projects and run tests
  • log_monitor.py - Debug with filtered logs
  • emulator_boot.py / emulator_shutdown.py - Device management

🧪 Testing

  • accessibility_audit.py - Check accessibility compliance
  • visual_diff.py - Visual regression testing
  • test_recorder.py - Document test execution
  • app_state_capture.py - Debug test failures

⚙️ Advanced

  • privacy_manager.py - Test permission flows
  • push_notification.py - Test notification handling
  • clipboard.py / status_bar.py - Fine-grained control
  • emulator_create/​delete/​erase.py - CI/​CD provisioning

Typical Workflows

Manual Testing Flow

# 1. Launch app
python scripts/​app_launcher.py --launch com.example.app

# 2. See what's on screen
python scripts/​screen_mapper.py

# 3. Interact
python scripts/​navigator.py --find-text "Login" --tap
python scripts/​navigator.py --find-type EditText --index 0 --enter-text "[email protected]"
python scripts/​keyboard.py --button enter

# 4. Verify
python scripts/​screen_mapper.py

Automated Testing Flow

# 1. Start recording
recorder = TestRecorder("Login Flow")

# 2. Execute test steps
recorder.step("Launch app", screen_name="Splash")
# ... interactions ...
recorder.step("Verify logged in", screen_name="Home")

# 3. Finish
recorder.finish(passed=True)

CI/​CD Flow

# 1. Create fresh emulator
python scripts/​emulator_create.py --device pixel_7 --api 34 --name test-device

# 2. Boot emulator
python scripts/​emulator_boot.py --avd test-device --wait-ready

# 3. Build and test
python scripts/​build_and_test.py --project . --test

# 4. Run UI tests
# ... your test scripts ...

# 5. Cleanup
python scripts/​emulator_shutdown.py --serial emulator-5554
python scripts/​emulator_delete.py --name test-device

Debugging Flow

# 1. Capture complete state
python scripts/​app_state_capture.py --package com.myapp --output debug-snapshots/

# 2. Monitor logs in real-time
python scripts/​log_monitor.py --app com.myapp --severity error,warning --follow

# 3. Check accessibility issues
python scripts/​accessibility_audit.py --output audit-reports/ --verbose

Requirements

  • macOS, Linux, or Windows
  • Android SDK with platform-tools and emulator
  • Python 3.8+
  • ADB (Android Debug Bridge)
  • Optional: Gradle for building
  • Optional: Pillow for screenshot resizing

Installation

Environment Setup

# 1. Install Android SDK (via Android Studio or command line tools)
# Download from: https://developer.android.com/​studio

# 2. Set environment variables
export ANDROID_HOME=$HOME/​Library/​Android/​sdk  # macOS
export PATH=$PATH:$ANDROID_HOME/​platform-tools
export PATH=$PATH:$ANDROID_HOME/​emulator

# 3. Verify installation
adb version
emulator -version

As Claude Code Skill

# Personal installation
git clone <repository-url> ~/​.claude/​skills/​android-emulator-skill

# Project installation
git clone <repository-url> .claude/​skills/​android-emulator-skill

Documentation

  • SKILL.md (this file) - Script reference and quick start
  • README.md - Installation and examples
  • CLAUDE.md - Architecture and implementation details
  • STATUS.md - Project status and roadmap
  • TESTING.md - Testing guide
  • references/​ - Deep documentation on specific topics
  • examples/​ - Complete automation workflows

Key Design Principles

Semantic Navigation: Find elements by meaning (text, type, ID) not pixel coordinates. Survives UI changes.

Token Efficiency: Concise default output (3-5 lines) with optional verbose and JSON modes for detailed results. 96% reduction vs raw tools.

Accessibility-First: Built on standard accessibility APIs for reliability and compatibility.

Zero Configuration: Works immediately with Android SDK installed. No complex setup required.

Structured Data: Scripts output JSON or formatted text, not raw logs. Easy to parse and integrate.

Cross-Platform: Works on macOS, Linux, and Windows.

Real Devices: Unlike iOS, works with both emulators and real devices.

Android-Specific Features

Real Device Support: Works with both emulators and physical devices connected via USB/​WiFi.

Multiple Emulators: Support for running multiple emulators simultaneously with batch operations.

Flexible Architecture: Works with both x86_64 and ARM emulator architectures.

Gradle Integration: Native integration with Android's Gradle build system.

Advanced Logging: Logcat filtering with regex, severity, and app-specific targeting.

Permission Testing: Programmatic grant/​revoke of runtime permissions.

Notification Testing: Simulate push notifications for testing handling logic.

Feature Parity with iOS Skill

100% Feature Parity Achieved! ✓

This Android skill now provides equivalent functionality to the iOS Simulator Skill:

Feature CategoryiOSAndroidStatus
App Management✓✓Complete
Device Lifecycle✓✓Complete
Navigation✓✓Complete
Gestures✓✓Complete
Keyboard Input✓✓Complete
Build Automation✓✓Complete
Log Monitoring✓✓Complete
Accessibility Audit✓✓Complete
Visual Testing✓✓Complete
Test Recording✓✓Complete
State Capture✓✓Complete
Permissions✓✓Complete
Clipboard✓✓Complete
Status Bar✓✓Complete
Push Notifications✓✓Complete

Contributing

New scripts should:

  • Use class-based design for > 50 lines of logic
  • Support --serial and auto-detection
  • Support --json output
  • Provide --help documentation
  • Follow Black and Ruff standards
  • Update this SKILL.md
  • Test with real emulators before submission

Differences from iOS

Architecture

  • iOS: Uses IDB for UI interaction, xcrun simctl for device management
  • Android: Uses adb for everything, uiautomator for UI interaction

Element Types

  • iOS: Button, TextField, SecureTextField, StaticText, etc.
  • Android: Button, EditText, TextView, ImageView, etc.

Device Management

  • iOS: Simulators only (macOS required)
  • Android: Emulators + real devices (cross-platform)

Build System

  • iOS: Xcode project files (.xcodeproj)
  • Android: Gradle build files (build.gradle)

Status: Feature complete! All 20 scripts implemented with full feature parity to iOS Simulator Skill.

Use these scripts directly or let Claude Code invoke them automatically when your request matches the skill description.

More skills from majiayu000

xiaohongshu logo
majiayu000/claude-arsenal

xiaohongshu

xiaohongshu

286 148
View
agent-task-conductor logo
majiayu000/claude-skill-registry

agent-task-conductor

Conduct multi-agent task orchestration and workflow coordination.

663 1
View
conductor-setup logo
majiayu000/claude-skill-registry

conductor-setup

Initialize project with Conductor artifacts (product definition,

663 1
View
animation-designer logo
majiayu000/claude-skill-registry

animation-designer

Expert in web animations, transitions, and motion design using Framer Motion and CSS

663 1
View
diagramming logo
majiayu000/claude-skill-registry

diagramming

Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...

663 1
View
h3-pg logo
majiayu000/claude-skill-registry-data

h3-pg

PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.

23 1
View
conductor-development logo
majiayu000/claude-skill-registry

conductor-development

Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...

663 1
View
conductor-status logo
majiayu000/claude-skill-registry

conductor-status

Display project status, active tracks, and next actions

663 1
View
dockerization logo
majiayu000/claude-skill-registry

dockerization

Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.

663 1
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View