Launch and interact with Android emulators and iOS simulators directly inside VS Code. View device screens, tap to interact, and monitor tool versions — all without leaving your editor.
Features
Android Emulator
Live video streaming via scrcpy — real-time device display in a VS Code webview panel.
Tap interaction — click on the device view to send touch events via ADB.
Auto-launch — starts an AVD if none is running (configurable via embedded-device-emulator.avdName).
Configurable stream quality — adjust max resolution and video bitrate.
iOS Simulator (Experimental)
Screenshot polling — streams the simulator display as JPEG frames at ~2.5 FPS using xcrun simctl io screenshot.
Tap interaction — uses the macOS Accessibility API (osascript + System Events click at) to send taps to the Simulator window. Requires Xcode 26+.
Opt-in — disabled by default; enable via embedded-device-emulator.enableIosSimulator.
Diagnostics
Show Tool Versions — opens an output channel with versions for the extension, Node.js, platform, ANDROID_HOME, ADB, emulator, Java, Xcode, sim runtimes, scrcpy, and scrcpy-server.
Xcode 26+ (full Xcode, not just Command Line Tools)
iOS
macOS — System Events Accessibility API for tap input
Note: The iOS Simulator viewer requires Xcode 26.3 or later. simctl io screenshot is used for display; simctl io tap was removed in Xcode 26.3, so taps are sent via AppleScript.
Extension Settings
This extension contributes the following settings:
Setting
Default
Description
embedded-device-emulator.androidHome
""
Path to Android SDK root (e.g., ~/Android/Sdk). Leave empty to use ANDROID_HOME environment variable.
embedded-device-emulator.avdName
""
Name of the AVD to launch if no emulator is running.
embedded-device-emulator.scrcpyServerJar
""
Path to scrcpy-server.jar. Leave empty to use the version bundled with scrcpy.
embedded-device-emulator.maxSize
1080
Maximum video dimension for the scrcpy stream.
embedded-device-emulator.videoBitRate
4000000
Video bitrate for the scrcpy stream (bps).
embedded-device-emulator.enableIosSimulator
false
Enable the iOS Simulator viewer (experimental).
Commands
Command
Title
embedded-device-emulator.startAndroidEmulator
Embedded Simulator: Start Android Emulator
embedded-device-emulator.startIosSimulator
Embedded Simulator: Start iOS Simulator
embedded-device-emulator.showVersions
Embedded Simulator: Show Tool Versions
Known Issues
iOS viewer is experimental. Screenshot polling is limited to ~2.5 FPS. Tap coordinates may need calibration depending on your Simulator window size and macOS version.
macOS Accessibility permission may be required for iOS taps. Grant permission to VS Code (or Terminal) in System Settings > Privacy & Security > Accessibility.
The extension cannot run in virtual or untrusted workspaces — it needs access to local ADB, xcrun, and emulator binaries.
Release Notes
1.0.1
Fix publisher ID for marketplace publishing.
Add MIT license file.
Various build and release pipeline improvements.
1.0.0
Initial release.
Android emulator video streaming via scrcpy with tap interaction.
Experimental iOS simulator support (screenshot polling, Xcode 26+ only).