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 "user@example.com"
# 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)
- common/device_utils.py - ADB command building and device detection
- common/screenshot_utils.py - Screenshot capture and processing
- common/cache_utils.py - Progressive disclosure cache system
App Management (1 script)
- 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
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
emulator_shutdown.py - Gracefully shutdown emulators
- Shutdown by serial number
- Optional verification of shutdown completion
- Batch shutdown operations
- Options:
--serial, --verify, --timeout, --all, --json
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
emulator_delete.py ⭐ NEW - Delete AVDs permanently
- Delete by AVD name
- List available AVDs
- Options:
--name, --list, --json
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
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
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)
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
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
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
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
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
visual_diff.py - Compare screenshots for visual changes
- Pixel-perfect comparison
- Highlight differences
- Generate diff images
- Options:
--image1, --image2, --output, --threshold, --json
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
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
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
clipboard.py ⭐ NEW - Clipboard management
- Copy text to device clipboard
- Test paste functionality
- Options:
--copy, --paste, --serial, --json
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
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 Tool |
Android Equivalent |
Status |
| xcrun simctl |
adb / avdmanager / emulator |
✓ Complete |
| IDB |
adb shell uiautomator / input |
✓ Complete |
| iOS Simulator |
Android Emulator |
✓ Complete |
| xcodebuild |
Gradle wrapper |
✓ Complete |
| Accessibility tree |
UI hierarchy dump |
✓ Complete |
| simctl privacy |
pm grant/revoke |
✓ Complete |
| xcresult |
Gradle 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 "user@test.com"
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 Category |
iOS |
Android |
Status |
| 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.
1---2name: android-emulator-skill3description: 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.4---56# Android Emulator Skill78Build, test, and automate Android applications using accessibility-driven navigation and structured data instead of pixel coordinates.910## Quick Start1112```bash13# 1. Launch app14python scripts/app_launcher.py --launch com.example.app1516# 2. Map screen to see elements17python scripts/screen_mapper.py1819# 3. Tap button20python scripts/navigator.py --find-text "Login" --tap2122# 4. Enter text23python scripts/navigator.py --find-type EditText --enter-text "user@example.com"2425# 5. Run accessibility audit26python scripts/accessibility_audit.py27```2829All scripts support `--help` for detailed options and `--json` for machine-readable output.3031## Status: Feature Complete (v0.1.0)3233### Completed Components ✓ (20 scripts)3435#### Core Utilities (3 modules)361. **common/device_utils.py** - ADB command building and device detection372. **common/screenshot_utils.py** - Screenshot capture and processing383. **common/cache_utils.py** - Progressive disclosure cache system3940#### App Management (1 script)414. **app_launcher.py** - App lifecycle management42 - Launch apps by package name43 - Terminate apps44 - Install/uninstall APKs45 - Deep link navigation46 - List installed packages47 - Check app state48 - Options: `--launch`, `--terminate`, `--install`, `--uninstall`, `--open-url`, `--list`, `--state`, `--json`4950#### Device Lifecycle (5 scripts) ✓ COMPLETE515. **emulator_boot.py** - Boot emulators with optional readiness verification52 - Boot by AVD name53 - Wait for device ready with timeout54 - Batch boot operations55 - Headless mode support56 - Options: `--avd`, `--wait-ready`, `--timeout`, `--headless`, `--list-avds`, `--json`57586. **emulator_shutdown.py** - Gracefully shutdown emulators59 - Shutdown by serial number60 - Optional verification of shutdown completion61 - Batch shutdown operations62 - Options: `--serial`, `--verify`, `--timeout`, `--all`, `--json`63647. **emulator_create.py** ⭐ NEW - Create AVDs dynamically65 - Create by device type and API level66 - List available device definitions67 - List available system images68 - Options: `--device`, `--api`, `--name`, `--abi`, `--variant`, `--list-devices`, `--list-images`, `--json`69708. **emulator_delete.py** ⭐ NEW - Delete AVDs permanently71 - Delete by AVD name72 - List available AVDs73 - Options: `--name`, `--list`, `--json`74759. **emulator_erase.py** ⭐ NEW - Factory reset AVDs76 - Wipe user data without deleting AVD77 - Preserve AVD configuration78 - Options: `--name`, `--force`, `--list`, `--json`7980#### Build & Development (2 scripts) ✓ COMPLETE8110. **build_and_test.py** ⭐ NEW - Gradle build automation82 - Build with minimal token output83 - Clean builds84 - Run tests85 - Parse errors and warnings86 - Options: `--project`, `--variant`, `--clean`, `--test`, `--verbose`, `--json`878811. **log_monitor.py** ⭐ NEW - Real-time logcat monitoring89 - Filter by app package90 - Filter by severity (error/warning/info/debug)91 - Smart deduplication92 - Duration-based or follow mode93 - Save logs to file94 - Options: `--app`, `--serial`, `--severity`, `--follow`, `--duration`, `--output`, `--clear`, `--verbose`, `--json`9596#### Navigation & Interaction (4 scripts)9712. **screen_mapper.py** - Analyze current screen and list interactive elements98 - Count elements by type99 - List buttons, EditTexts, etc.100 - Token-efficient summaries101 - Options: `--serial`, `--verbose`, `--json`, `--list`10210313. **navigator.py** - Find and interact with elements semantically104 - Find by text, type, resource ID105 - Tap, enter text, get bounds106 - Fuzzy matching support107 - Options: `--find-text`, `--find-type`, `--find-id`, `--tap`, `--enter-text`, `--list`, `--serial`, `--json`10810914. **gesture.py** - Perform swipes, scrolls, long press110 - Directional swipes111 - Custom swipe coordinates112 - Scroll and long press113 - Options: `--swipe`, `--from-edge`, `--duration`, `--long-press`, `--scroll`, `--serial`, `--json`11411515. **keyboard.py** - Text input and hardware buttons116 - Type text117 - Press hardware keys (back, home, enter, etc.)118 - Clear text119 - Options: `--text`, `--key`, `--button`, `--clear`, `--serial`, `--json`120121#### Testing & Analysis (5 scripts) ✓ COMPLETE12216. **accessibility_audit.py** ⭐ NEW - WCAG compliance checking123 - Missing content descriptions124 - Touch target size verification125 - EditText hint checking126 - Image accessibility127 - Categorize by severity (critical/warning/info)128 - Save reports (JSON + Markdown)129 - Options: `--serial`, `--output`, `--verbose`, `--json`13013117. **visual_diff.py** - Compare screenshots for visual changes132 - Pixel-perfect comparison133 - Highlight differences134 - Generate diff images135 - Options: `--image1`, `--image2`, `--output`, `--threshold`, `--json`13613718. **test_recorder.py** ⭐ NEW - Automatically document test execution138 - Record test steps with screenshots139 - Capture UI hierarchy per step140 - Generate test reports (JSON + Markdown)141 - Inline mode for vision-based testing142 - Options: `--test-name`, `--output`, `--serial`, `--inline`, `--size`, `--app-name`14314419. **app_state_capture.py** ⭐ NEW - Complete debugging snapshots145 - Capture screenshot + UI hierarchy + logs + app info146 - Create timestamped snapshots147 - All-in-one debugging artifact148 - Options: `--package`, `--output`, `--serial`, `--logs`, `--no-logs`, `--screenshot-size`, `--json`149150#### Advanced Testing & Permissions (4 scripts) ✓ COMPLETE15120. **privacy_manager.py** ⭐ NEW - App permission management152 - Grant/revoke permissions153 - List app permissions154 - Support for 20+ permission types155 - Batch operations156 - Options: `--grant`, `--revoke`, `--list`, `--package`, `--serial`, `--list-permissions`, `--json`15715821. **clipboard.py** ⭐ NEW - Clipboard management159 - Copy text to device clipboard160 - Test paste functionality161 - Options: `--copy`, `--paste`, `--serial`, `--json`16216322. **status_bar.py** ⭐ NEW - Status bar control164 - Set battery level and charging state165 - Set WiFi/mobile signal strength166 - Set time display (for consistent screenshots)167 - Demo mode support168 - Options: `--battery`, `--charging`, `--wifi`, `--mobile`, `--time`, `--reset`, `--serial`, `--json`16917023. **push_notification.py** ⭐ NEW - Push notification simulation171 - Send test notifications172 - List notification channels173 - Multiple delivery methods174 - Options: `--package`, `--title`, `--message`, `--id`, `--data`, `--list-channels`, `--method`, `--serial`, `--json`175176## Android vs iOS Mapping177178| iOS Tool | Android Equivalent | Status |179|----------|-------------------|--------|180| xcrun simctl | adb / avdmanager / emulator | ✓ Complete |181| IDB | adb shell uiautomator / input | ✓ Complete |182| iOS Simulator | Android Emulator | ✓ Complete |183| xcodebuild | Gradle wrapper | ✓ Complete |184| Accessibility tree | UI hierarchy dump | ✓ Complete |185| simctl privacy | pm grant/revoke | ✓ Complete |186| xcresult | Gradle test reports | ✓ Complete |187188## Script Categories189190### 🚀 Essential (Use Daily)191- **app_launcher.py** - Launch/terminate apps192- **screen_mapper.py** - Understand current screen193- **navigator.py** - Interact with UI elements194- **gesture.py** / **keyboard.py** - User input195196### 🔧 Development197- **build_and_test.py** - Build projects and run tests198- **log_monitor.py** - Debug with filtered logs199- **emulator_boot.py** / **emulator_shutdown.py** - Device management200201### 🧪 Testing202- **accessibility_audit.py** - Check accessibility compliance203- **visual_diff.py** - Visual regression testing204- **test_recorder.py** - Document test execution205- **app_state_capture.py** - Debug test failures206207### ⚙️ Advanced208- **privacy_manager.py** - Test permission flows209- **push_notification.py** - Test notification handling210- **clipboard.py** / **status_bar.py** - Fine-grained control211- **emulator_create/delete/erase.py** - CI/CD provisioning212213## Typical Workflows214215### Manual Testing Flow216```bash217# 1. Launch app218python scripts/app_launcher.py --launch com.example.app219220# 2. See what's on screen221python scripts/screen_mapper.py222223# 3. Interact224python scripts/navigator.py --find-text "Login" --tap225python scripts/navigator.py --find-type EditText --index 0 --enter-text "user@test.com"226python scripts/keyboard.py --button enter227228# 4. Verify229python scripts/screen_mapper.py230```231232### Automated Testing Flow233```bash234# 1. Start recording235recorder = TestRecorder("Login Flow")236237# 2. Execute test steps238recorder.step("Launch app", screen_name="Splash")239# ... interactions ...240recorder.step("Verify logged in", screen_name="Home")241242# 3. Finish243recorder.finish(passed=True)244```245246### CI/CD Flow247```bash248# 1. Create fresh emulator249python scripts/emulator_create.py --device pixel_7 --api 34 --name test-device250251# 2. Boot emulator252python scripts/emulator_boot.py --avd test-device --wait-ready253254# 3. Build and test255python scripts/build_and_test.py --project . --test256257# 4. Run UI tests258# ... your test scripts ...259260# 5. Cleanup261python scripts/emulator_shutdown.py --serial emulator-5554262python scripts/emulator_delete.py --name test-device263```264265### Debugging Flow266```bash267# 1. Capture complete state268python scripts/app_state_capture.py --package com.myapp --output debug-snapshots/269270# 2. Monitor logs in real-time271python scripts/log_monitor.py --app com.myapp --severity error,warning --follow272273# 3. Check accessibility issues274python scripts/accessibility_audit.py --output audit-reports/ --verbose275```276277## Requirements278279- macOS, Linux, or Windows280- Android SDK with platform-tools and emulator281- Python 3.8+282- ADB (Android Debug Bridge)283- Optional: Gradle for building284- Optional: Pillow for screenshot resizing285286## Installation287288### Environment Setup289290```bash291# 1. Install Android SDK (via Android Studio or command line tools)292# Download from: https://developer.android.com/studio293294# 2. Set environment variables295export ANDROID_HOME=$HOME/Library/Android/sdk # macOS296export PATH=$PATH:$ANDROID_HOME/platform-tools297export PATH=$PATH:$ANDROID_HOME/emulator298299# 3. Verify installation300adb version301emulator -version302```303304### As Claude Code Skill305306```bash307# Personal installation308git clone <repository-url> ~/.claude/skills/android-emulator-skill309310# Project installation311git clone <repository-url> .claude/skills/android-emulator-skill312```313314## Documentation315316- **SKILL.md** (this file) - Script reference and quick start317- **README.md** - Installation and examples318- **CLAUDE.md** - Architecture and implementation details319- **STATUS.md** - Project status and roadmap320- **TESTING.md** - Testing guide321- **references/** - Deep documentation on specific topics322- **examples/** - Complete automation workflows323324## Key Design Principles325326**Semantic Navigation**: Find elements by meaning (text, type, ID) not pixel coordinates. Survives UI changes.327328**Token Efficiency**: Concise default output (3-5 lines) with optional verbose and JSON modes for detailed results. 96% reduction vs raw tools.329330**Accessibility-First**: Built on standard accessibility APIs for reliability and compatibility.331332**Zero Configuration**: Works immediately with Android SDK installed. No complex setup required.333334**Structured Data**: Scripts output JSON or formatted text, not raw logs. Easy to parse and integrate.335336**Cross-Platform**: Works on macOS, Linux, and Windows.337338**Real Devices**: Unlike iOS, works with both emulators and real devices.339340## Android-Specific Features341342**Real Device Support**: Works with both emulators and physical devices connected via USB/WiFi.343344**Multiple Emulators**: Support for running multiple emulators simultaneously with batch operations.345346**Flexible Architecture**: Works with both x86_64 and ARM emulator architectures.347348**Gradle Integration**: Native integration with Android's Gradle build system.349350**Advanced Logging**: Logcat filtering with regex, severity, and app-specific targeting.351352**Permission Testing**: Programmatic grant/revoke of runtime permissions.353354**Notification Testing**: Simulate push notifications for testing handling logic.355356## Feature Parity with iOS Skill357358**100% Feature Parity Achieved!** ✓359360This Android skill now provides equivalent functionality to the iOS Simulator Skill:361362| Feature Category | iOS | Android | Status |363|-----------------|-----|---------|--------|364| App Management | ✓ | ✓ | Complete |365| Device Lifecycle | ✓ | ✓ | Complete |366| Navigation | ✓ | ✓ | Complete |367| Gestures | ✓ | ✓ | Complete |368| Keyboard Input | ✓ | ✓ | Complete |369| Build Automation | ✓ | ✓ | Complete |370| Log Monitoring | ✓ | ✓ | Complete |371| Accessibility Audit | ✓ | ✓ | Complete |372| Visual Testing | ✓ | ✓ | Complete |373| Test Recording | ✓ | ✓ | Complete |374| State Capture | ✓ | ✓ | Complete |375| Permissions | ✓ | ✓ | Complete |376| Clipboard | ✓ | ✓ | Complete |377| Status Bar | ✓ | ✓ | Complete |378| Push Notifications | ✓ | ✓ | Complete |379380## Contributing381382New scripts should:383- Use class-based design for > 50 lines of logic384- Support --serial and auto-detection385- Support --json output386- Provide --help documentation387- Follow Black and Ruff standards388- Update this SKILL.md389- Test with real emulators before submission390391## Differences from iOS392393### Architecture394- **iOS**: Uses IDB for UI interaction, xcrun simctl for device management395- **Android**: Uses adb for everything, uiautomator for UI interaction396397### Element Types398- **iOS**: Button, TextField, SecureTextField, StaticText, etc.399- **Android**: Button, EditText, TextView, ImageView, etc.400401### Device Management402- **iOS**: Simulators only (macOS required)403- **Android**: Emulators + real devices (cross-platform)404405### Build System406- **iOS**: Xcode project files (.xcodeproj)407- **Android**: Gradle build files (build.gradle)408409---410411**Status**: Feature complete! All 20 scripts implemented with full feature parity to iOS Simulator Skill.412413Use these scripts directly or let Claude Code invoke them automatically when your request matches the skill description.