VS Code Extensions
Embedded Device Emulator

Embedded Device Emulator

by jullury

Launch and interact with Android emulators and iOS simulators inside VS Code

Downloads

55

Rating

— (0)

Version

1.1.0

Last updated

Jun 22, 2026

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.

Requirements

Platform Dependency
Android Android SDK with platform tools (adb, emulator)
Android scrcpy (brew install scrcpy or equivalent)
iOS 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).
  • Tool version diagnostics command.

Related extensions