The Android Emulator simulates various Android phone, tablet, Wear OS, and Android TV devices on your computer. It comes with predefined configurations for popular device types and can transfer data faster than a device connected over USB.
The Android Emulator provides almost all the capabilities of a real Android device. You can simulate incoming phone calls and text messages, specify the location of the device, simulate different network speeds, simulate rotation and other hardware sensors, access the Google Play Store, and much more.
Watch the following video for an overview of some emulator features.
About the Android Emulator
Each instance of the Android Emulator uses an Android Virtual Device (AVD) to configure its size, form factor, Android version, and various hardware characteristics. To effectively test your app, you should create an AVD that models each device type that your app is designed to support.
Each AVD functions as an independent device, with its own private storage for user data, SD card, and so on. By default, the emulator stores the user data, SD card data, and cache in a directory specific to that AVD. When you launch the emulator, it loads the user data and SD card data from the AVD directory.
To create and manage AVDs, use the AVD Manager.
The Android Emulator has additional requirements beyond the basic system requirements for Android Studio:
- SDK Tools 25.0.10 or higher
- 64-bit processor
- Windows: CPU with UG (unrestricted guest) support
- HAXM 6.2.1 or later
The accelerated emulator requires one of the following on Windows or Linux:
- Windows or Linux: Intel processor with support for Intel VT-x, Intel EM64T (Intel 64), and Execute Disable (XD) Bit functionality
- Linux: AMD processor with support for AMD Virtualization (AMD-V) and Supplemental Streaming SIMD Extensions 3 (SSSE3)
To work with Android 8.1 (API level 27) and higher system images, an attached webcam must have the capability to capture 720p frames.
What's not supported
The Android Emulator doesn't include virtual hardware for the following:
- SD card insert/eject
- Device-attached headphones
The watch emulator for Wear OS doesn't support the Overview (Recent Apps) button, D-pad, and fingerprint sensor.
Run an app in the Android Emulator
You can run an app from an Android Studio project, or you can run an app that's been installed on the Android Emulator as you would run any app on a device.
To start the Android Emulator and run an app in your project:
- Open an Android Studio project and click Run
The Select Deployment Target dialog appears.
- If you receive an error or warning message at the top of the dialog, click
the link to correct the problem or get more information.
The No USB devices or running emulators detected warning means that you don’t currently have any emulators running or any detected hardware devices connected to your computer. If you don’t have hardware devices connected to your computer or any emulators running, you can ignore the message.
Some errors you must fix before you can continue, such as certain Hardware Accelerated Execution Manager (Intel HAXM) errors.
For Mac, if you see a
Warning: No DNS servers founderror when starting the emulator, check to see whether you have an
/etc/resolv.conffile. If not, enter the following command in a terminal window:
ln -s /private/var/run/resolv.conf /etc/resolv.conf
- In the Select Deployment Target dialog, select an existing emulator
definition, and then click OK.
If you don’t see a definition you want to use, click Create New Virtual Device to launch the AVD Manager. After you define a new AVD, in the Select Deployment Target dialog, click OK.
If you want to use this emulator definition as the default for your project, select Use same selection for future launches.
Launch the Android Emulator without first running an app
To start the emulator:
- Open the AVD Manager.
- Double-click an AVD, or click Run .
The Android Emulator appears.
While the emulator is running, you can run Android Studio projects and choose the emulator as the target device. You can also drag one or more APKs onto the emulator to install them, and then run them.
Run the emulator with Quick Boot
Beginining with revision 27.0.2, the Android Emulator includes Quick Boot, which launches the emulator in just a few seconds. Although the AVD must perform a cold boot the first time you start it (just like powering on a device), all subsequent starts use Quick Boot—it boots fast and the system is restored to the state at which you closed the emulator or manually saved a snapshot (similar to waking a device). This feature is enabled by default for all AVDs.
Any update to the Android Emulator, system image, or AVD settings resets the AVD's saved state, so the next time you start the AVD, it must perform a cold boot. You cannot take snapshots while ADB is offline (such as while Android is still booting).
You can also control the Quick Boot options when starting the emulator from the command line.
Save snapshots automatically on exit
To control whether the emulator saves a snapshot for the currently open AVD when exiting, use the Save quick-boot state on exit menu in the emulator's Extended controls:
- Yes: Always save an AVD snapshot when you close the emulator. This is the default.
- No: Don't save an AVD snapshot when you close the emulator.
- Ask: Prompt for whether to save an AVD snapshot when you close the emulator.
Your selection applies only to the currently open AVD.
Save snapshot at any time
If you don't choose Yes in the Save quick-boot state on exit menu to automatically save a snapshot on exit, you can use the Save Now button below this menu to save a snapshot at any time.
Disable Quick Boot
If you want to disable Quick Boot so your AVD always performs a cold boot, do the following:
- Select Tools > AVD Manager and click Edit this AVD .
- Click Show Advanced Settings and scroll down to Emulated Performance.
- Select Cold boot.
Perform a cold boot once
Instead of disabling Quick Boot completely, you can cold boot just once by clicking Cold Boot Now from the AVD's drop-down menu in the AVD Manager.
Quick Boot requirements and troubleshooting
- Quick Boot does not work with Android 4.0.4 (API level 15) or lower.
- Quick Boot does not work with ARM system images for Android 8.0 (API level 26).
- When the Android Emulator attempts to save or load a Quick Boot snapshot, it may fail, in which case the emulator will display a message at the top of the window regarding the cause for the failure.
- If the emulator fails to boot from a snapshot, select Cold Boot Now for the AVD in the AVD Manager and submit a bug report.
- Quick Boot is not reliable when software rendering is enabled. If Quick Boot does not work, click Edit this AVD from the AVD Manager and change Graphics to either Hardware or Automatic.
- Loading or saving a Quick Boot snapshot is a memory-intensive operation. If you do not have enough RAM free when a load or save operation begins, the operating system may swap the contents of RAM to the hard disk, which can greatly slow the operation. If you experience very slow Quick Boot loads or saves, you may be able to speed these operations by freeing RAM. Closing applications that are not essential for your work is a good way to free RAM.
Install and add files
To install an APK file on the emulated device, drag an APK file onto the emulator screen. An APK Installer dialog appears. When the installation completes, you can view the app in your apps list.
To add a file to the emulated device, drag the file onto the emulator screen.
The file is placed in the
/sdcard/Download/ directory. You can
view the file from Android Studio using the
Device File Explorer, or
find it from the device using the Downloads or Files app, depending
on the device version.
Navigate the emulator screen
Use your computer mouse pointer to mimic your finger on the touchscreen; select menu items and input fields; and click buttons and controls. Use your computer keyboard to type characters and enter emulator shortcuts.
|Swipe the screen||Point to the screen, press and hold the primary mouse button, swipe across the screen, and then release.|
|Drag an item||Point to an item on the screen, press and hold the primary mouse button, move the item, and then release.|
|Point to the screen, press the primary mouse button, and then release. For example, you could click a text field to start typing in it, select an app, or press a button.|
|Double tap||Point to the screen, press the primary mouse button quickly twice, and then release.|
|Touch and hold||Point to an item on the screen, press the primary mouse button, hold, and then release. For example, you could open options for an item.|
|Type||You can type in the emulator by using your computer keyboard, or using a keyboard that pops up on the emulator screen. For example, you could type in a text field after you selected it.|
Pressing Control (Command on Mac) brings up a pinch gesture multi-touch interface. The mouse acts as the first finger, and across the anchor point is the second finger. Drag the cursor to move the first point.
Clicking the left mouse button acts like touching down both points, and releasing acts like picking both up.
|Vertical swipe||Open a vertical menu on the screen and use the scroll wheel (mouse wheel) to scroll through the menu items until you see the one you want. Click the menu item to select it.|
Perform common actions in the emulator
To perform common actions with the emulator, use the panel on the right side, as described in table 2.
You can use keyboard shortcuts to perform many common actions in the emulator. For a complete list of shortcuts in the emulator, press F1 (Command+/ on Mac) to open the Help pane in the Extended controls window.
||Close the emulator.|
||Minimize the emulator window.|
|Resize||Resize the emulator as you would any other operating system window. The emulator maintains an aspect ratio appropriate for your device.|
||Click to turn the screen on or off.
Click and hold to turn the device on or off.
||Click to view a slider control and turn the volume up. Click again to turn it up more, or use the slider control to change the volume.|
||Click to view a slider control and turn the volume down. Click again to turn it down more, or use the slider control to change the volume.|
||Rotate the device 90 degrees counterclockwise.|
||Rotate the device 90 degrees clockwise.|
||Click to take a screenshot of the device. The default save location is
your computer desktop. To change the save location, select
… > Settings. The emulator creates a
file with the name
Click so the cursor changes to the zoom icon. To exit zoom mode, click the button again.
Zoom in and out in zoom mode:
To pan in zoom mode, hold Control (Command on Mac) while pressing the arrow keys on the keyboard.
To tap the device screen in zoom mode, Control-click (Command-click on Mac).
||Return to the previous screen, or close a dialog box, an options menu, the Notifications panel, or the onscreen keyboard.|
||Return to the Home screen.|
|Tap to open a list of thumbnail images of apps you’ve worked with recently. To open an app, tap it. To remove a thumbnail from the list, swipe it left or right. This button isn't supported for Wear OS.|
|Menu||Press Control+M (Command+M on Mac) to simulate the Menu button.|
||Click to access other features and settings, described in the next table.|
Extended controls, settings, and help
Use the extended controls to send data, change device properties, control apps, and more. To open the Extended controls window, click More in the emulator panel.
You can use keyboard shortcuts to perform many of these tasks. For a complete list of shortcuts in the emulator, press F1 (Command+/ on Mac) to open the Help pane.
The emulator lets you simulate "my location" information: the location where the emulated device is currently located. For example, if you click My Location in Google Maps and then send a location, the map shows it.
To send a GPS location:
In decimal mode, enter a Latitude value in the range -90.0 to +90.0 degrees and a Longitude value in the range -180.0 to +180.0 degrees.
In sexigesimal mode, enter a three-part Latitude value in the range -90 to +90 degrees, 0 to 59 minutes, and 0.0 to 60.0 seconds. Enter a Longitude value in the range -180 to +180 degrees, 0 to 59 minutes, and 0.0 to 60.0 seconds.
For the latitude, - indicates south and + indicates north; for the longitude, - indicates west and + indicates east. The + is optional.
Optionally specify an Altitude value in the range -1,000.0 to +10,000.0 meters.
To use geographic data from a GPS exchange format (GPX) or Keyhole Markup Language (KML) file:
The speed defaults to the Delay value (Speed 1X). You can increase the speed by double (Speed 2X), triple (Speed 3X), and so on.
The emulator lets you simulate various network conditions. You can approximate the network speed for different network protocols, or you can specify Full, which transfers data as quickly as your computer allows. Specifying a network protocol is always slower than Full. You can also specify the voice and data network status, such as roaming. The defaults are set in the AVD.
Select a Network type:
Select a Signal strength:
Select a Voice status, Data status, or both:
You can simulate the battery properties of a device to see how your app performs under different conditions. To select a Charge level, use the slider control.
Select a Charger connection value:
Select a Battery health value:
Select a Battery status value:
The emulator lets you simulate incoming phone calls and text messages.
To initiate a call to the emulator:
To send a text message to the emulator:
If the AVD has the directional pad enabled in the hardware profile, you can use the directional pad controls with the emulator. However, not all devices can support the directional pad; for example, an Android watch. The buttons simulate the following actions:
This control can simulate 10 different fingerprint scans. You can use it to test fingerprint integration in your app. This feature is disabled for Android 5.1 (API level 22) and lower, and for Wear OS.
To simulate a fingerprint scan on the virtual device:
|Virtual sensors > Accelerometer||
This control lets you test your app against changes in device position, orientation, or both. For example, you can simulate gestures such as tilt and rotation. The accelerometer doesn't track the absolute position of the device: it just detects when a change is occurring. The control simulates the way accelerometer and magnetometer sensors would respond when you move or rotate a real device.
The control reports
The control also reports
To rotate the device around the x, y, and z axes, select Rotate and do one of the following:
See Computing the Device's Orientation for more information about how yaw, pitch, and roll are calculated.
To move the device horizontally (x) or vertically (y), select Move and do one of the following:
To position the device at 0, 90, 180, or 270 degrees:
As you adjust the device, the Resulting values fields change accordingly. These are the values that an app can access.
You can import the AccelerometerPlay app to try out the Accelerometer control. Select File > New > Import Sample and select the app in the dialog. This app is showcased in the emulator video on this page.
|Virtual sensors > Additional sensors||
The emulator can simulate various position and environment sensors. It lets you adjust the following sensors so you can test them with your app:
|Settings > General||
|Settings > Proxy||
By default, the emulator uses the Android Studio HTTP proxy settings, but this screen allows you to manually define an HTTP proxy configuration for the emulator. For more information, see Using the emulator with a proxy.
|Settings > Advanced||
|Help > Keyboard Shortcuts||
This pane provides a complete list of keyboard shortcuts for the emulator. To open this pane while working in the emulator, press F1 (Command+/ on Mac).
For the shortcuts to work, the Send keyboard shortcuts option in the General settings pane must be set to Emulator controls (default).
|Help > Emulator Help||
To go to the online documentation for the emulator, click Documentation.
To file a bug against the emulator, click Send feedback. For more information, see how to report emulator bugs.
|Help > About||
See which adb port the emulator uses, as well as the Android and emulator version numbers. Compare the latest available emulator version with your version to determine if you have the latest software installed.
The emulator serial number is emulator-adb_port, which you can specify as an adb command line option, for example.
When using an AVD with API level 25 or higher, the emulator provides a simulated Wi-Fi access point ("AndroidWifi"), and Android automatically connects to it.
You can disable Wi-Fi in the emulator by running the emulator with the
Comparison of Android Emulator tools
The following table compares the tasks you can perform using the emulator UI, AVD Manager, commonly used command-line startup options, and the Emulator Console. In the AVD Manager, you can set hardware profile and AVD properties.
The table compares features that are similar, but not necessarily with identical functionality, between different emulator tools.
Although not listed in the table, the adb utility also supports commands for interacting with virtual devices, as described in Android Debug Bridge. For example, you can install an app on a virtual device by using Android Studio, the emulator UI, or adb. You can copy a file to a virtual device using the emulator UI or adb, and copy a file from a virtual device using adb.
Remember that to use certain features of the emulator with your apps, you need
to enable them through various
elements and manifest
permission constants, just as you would if you ran them on a hardware
|User interface control||Hardware profile property||AVD property||Command-line startup option||Console command|
|Device type: Phone/Tablet, Wear OS, Android TV|
|Back, Home, Overview, Menu||Input: Has Hardware Buttons (Back/Home/Menu)|
|Settings: Send keyboard shortcuts to||Input: Has Hardware Keyboard||Keyboard Input|
|Navigation Style: None, D-pad, Trackball, Wheel|
|Rotate||Supported Device States||Startup: Orientation||
(can choose webcam)
Settings: Screenshot save location
|Sensors: Accelerometer, Gyroscope, GPS, Proximity Sensor||
|Disk Images and Memory|
|Memory and Storage: SD Card||
|Memory and Storage: Internal Storage|
|RAM||Memory and Storage: RAM||
|Memory and Storage: VM Heap||
|In the Your Virtual Devices page of the AVD Manager, right-click an AVD and select Wipe Data.||
|Cellular: Network Type||Network: Speed||
|Settings: Use detected ADB location||
|In the System Image page of the AVD Manager, select a system image capable of VM acceleration.||
|Emulated Performance: Graphics — hardware, software, or auto||
|Settings: Emulator window theme|
|Resize||Screen Size and
|Default Skin||Device Frame and
Custom Skin Definition
Troubleshooting and known issues
Some antivirus software may be incompatible with the Android Emulator.
If you're using Avast software and are having trouble running the Android Emulator, try disabling the Use nested virtualization when available setting in the Avast Troubleshooting settings.
HAXM on older, unsupported versions of Mac OS
If you are using Android Emulator on older, unsupported versions of Mac OS X (such as 10.9), then you may need to use an older version of HAXM (6.1.2), too.
Android Emulator runs slowly after an update
A number of external factors can cause the Android Emulator to begin running slowly after an update. To begin troubleshooting, we recommend the following steps:
- If you are running Android Emulator on Windows, check to see if you have installed Windows Updates KB4013429 and KB4015217. Some users reported improved Android Emulator performance after uninstalling these updates. Users also reported improved Emulator performance after installing Windows Update KB4015438.
- If you have an Intel GPU (and in particular, the Intel HD 4000), ensure you have downloaded and installed the latest Intel graphics driver.
- If your machine has both an Intel HD 4000 GPU and a discrete GPU, disable the Intel HD 4000 GPU in Device Manager to ensure you are using the discrete GPU.
- Try running the emulator using the
-gpu swiftshader, or
-gpu guestmodes. For more information about configuring graphics acceleration options on the command line, see Configure Hardware Acceleration.
- Ensure that your router is not using IPv6 addresses if you do not have an IPv6 connection.
If you are still experiencing problems with the Android Emulator running slowly, Report a Bug, including the necessary Android Emulator Details so we can investigate.