The one and only Android SDK incorporates a mobile device emulator, which is a virtual mobile device
that works and executes functions on your computer. This android emulator allows the user to develop, test, and troubleshoot Android applications without actually having to have a physical device.

When the emulator is running, you can interact with the emulated mobile
device just as you would an actual mobile device, except that you use your mouse
pointer to "touch" the touchscreen and can use some keyboard keys to
invoke certain keys on the device.

This document is a reference to the available command line options and the keyboard mapping to device keys.
For a complete guide to using the Android Emulator, see
Using the Android Emulator.

Emulator Startup Options

The emulator supports a variety of options that you can specify
when launching the emulator, to control its appearance or behavior.
Here’s the command-line usage for launching the emulator with options:

emulator -avd <avd_name> [-<option> [<value>]] ... [-<qemu args>]

Table 1.Emulator startup options


Category Option Description Comments
Help -help Print a list of all emulator options.  
-help-all Print help for all startup options.  
-help-<option> Print help for a specific startup option.  
-help-debug-tags Print a list of all tags for -debug <tags>.  
-help-disk-images Print help for using emulator disk images.  
-help-environment Print help for emulator environment variables.  
-help-keys Print the current mapping of keys.  
-help-keyset-file Print help for defining a custom key mappings file.  
-help-virtual-device Print help for Android Virtual Device usage.  
AVD -avd <avd_name> or
@<avd_name>
Required. Specifies the AVD to load for this emulator
instance.
You must create an AVD configuration before launching the emulator.
Disk Images -cache <filepath> Use <filepath> as the working cache partition image. Optionally, you can specify a path relative to the current working directory.
If no cache file is specified, the emulator’s default behavior is to use a temporary file instead.

For more information on disk images, use -help-disk-images.

-data <filepath> Use <filepath> as the working user-data disk image. Optionally, you can specify a path relative to the current working directory.
If -data is not used, the emulator looks for a file named "userdata-qemu.img"
in the storage area of the AVD being used (see -avd).
-initdata <filepath> When resetting the user-data image (through -wipe-data), copy the contents
of this file to the new user-data disk image. By default, the emulator copies the <system>/userdata.img.
Optionally, you can specify a path relative to the current working directory. See also -wipe-data.

For more information on disk images, use -help-disk-images.

-nocache Start the emulator without a cache partition. See also -cache <file>.
-ramdisk <filepath> Use <filepath> as the ramdisk image. Default value is <system>/ramdisk.img.

Optionally, you can specify a path relative to the current working directory. For more information on disk images, use -help-disk-images.

-sdcard <filepath> Use <file> as the SD card image. Default value is <system>/sdcard.img.

Optionally, you can specify a path relative to the current working directory. For more information on disk images, use -help-disk-images.

-wipe-data Reset the current user-data disk image (that is, the file specified by -datadir and
-data, or the default file). The emulator deletes all data from the user data image file,
then copies the contents of the file at -inidata data to the image file before starting.
See also -initdata.

For more information on disk images, use -help-disk-images.

Debug -debug <tags> Enable/disable debug messages for the specified debug tags. <tags> is a space/comma/column-separated list of debug component names.
Use -help-debug-tags to print a list of debug component names that you can use.
-debug-<tag> Enable/disable debug messages for the specified debug tag. Use -help-debug-tags to print a list of debug component names that you can use in <tag>.
-debug-no-<tag> Disable debug messages for the specified debug tag.
-logcat <logtags> Enable logcat output with given tags. If the environment variable ANDROID_LOG_TAGS is defined and not
empty, its value will be used to enable logcat output by default.
-shell Create a root shell console on the current terminal. You can use this command even if the adb daemon in the emulated system is broken.
Pressing Ctrl-c from the shell stops the emulator instead of the shell.
-shell-serial <device> Enable the root shell (as in -shell and specify the QEMU character
device to use for communication with the shell.
<device> must be a QEMU device type. See the documentation for ‘-serial dev‘ at
wiki.qemu.org
for more information.

Here are some examples:

  • -shell-serial stdio is identical to -shell
  • -shell-serial tcp::4444,server,nowait lets you communicate with the shell over TCP port 4444
  • -shell-serial fdpair:3:6 lets a parent process communicate with the shell using fds 3 (in) and 6 (out)
  • -shell-serial fdpair:0:1 uses the normal stdin and stdout fds, except that QEMU won’t tty-cook the data.
-show-kernel <name> Display kernel messages.  
-trace <name> Enable code profiling (press F9 to start), written to a specified file.  
-verbose Enable verbose output. Equivalent to -debug-init.

You can define the default verbose output options used by emulator instances in the Android environment variable
ANDROID_VERBOSE. Define the options you want to use in a comma-delimited list, specifying only the stem of each option:
-debug-<tags>.

Here’s an example showing ANDROID_VERBOSE defined with the -debug-init and -debug-modem options:

ANDROID_VERBOSE=init,modem

For more information about debug tags, use <-help-debug-tags>.

Media -audio <backend> Use the specified audio backend.  
-audio-in <backend> Use the specified audio-input backend.  
-audio-out <backend> Use the specified audio-output backend.  
-noaudio Disable audio support in the current emulator instance.  
-radio <device> Redirect radio modem interface to a host character device.  
-useaudio Enable audio support in the current emulator instance. Enabled by default.
Network -dns-server <servers> Use the specified DNS server(s). The value of <servers> must be a comma-separated list of up to 4 DNS server names or
IP addresses.
-http-proxy <proxy> Make all TCP connections through a specified HTTP/HTTPS proxy The value of <proxy> can be one of the following:
http://<server>:<port>
http://<username>:<password>@<server>:<port>

The http:// prefix can be omitted. If the -http-proxy <proxy> command is not supplied,
the emulator looks up the http_proxy environment variable and automatically uses any value matching
the <proxy> format described above.

-netdelay <delay> Set network latency emulation to <delay>. Default value is none. See the table in Network Delay Emulation for
supported <delay> values.
-netfast Shortcut for -netspeed full -netdelay none  
-netspeed <speed> Set network speed emulation to <speed>. Default value is full. See the table in Network Speed Emulation for
supported <speed> values.
-port <port> Set the console port number for this emulator instance to <port>. The console port number must be an even integer between 5554 and 5584, inclusive. <port>+1
must also be free and will be reserved for ADB.
-report-console <socket> Report the assigned console port for this emulator instance to a remote third party
before starting the emulation.
<socket> must use one of these formats:

tcp:<port>[,server][,max=<seconds>]

unix:<port>[,server][,max=<seconds>]

Use -help-report-console

to view more information about this topic.

System -cpu-delay <delay> Slow down emulated CPU speed by <delay> Supported values for <delay> are integers between 0 and 1000.

Note that the <delay> does not correlate to clock speed or other absolute metrics
— it simply represents an abstract, relative delay factor applied non-deterministically
in the emulator. Effective performance does not always
scale in direct relationship with <delay> values.

-gps <device> Redirect NMEA GPS to character device. Use this command to emulate an NMEA-compatible GPS unit connected to
an external character device or socket. The format of <device> must be QEMU-specific
serial device specification. See the documentation for ‘serial -dev’ at
http://www.bellard.org/qemu/qemu-doc.html#SEC10.
-nojni Disable JNI checks in the Dalvik runtime.  
-qemu Pass arguments to qemu.  
-qemu -h Display qemu help.
-radio <device> Redirect radio mode to the specified character device. The format of <device> must be QEMU-specific
serial device specification. See the documentation for ‘serial -dev’ at
http://www.bellard.org/qemu/qemu-doc.html#SEC10.
-timezone <timezone> Set the timezone for the emulated device to <timezone>, instead of the host’s timezone. <timezone> must be specified in zoneinfo format. For example:

“America/Los_Angeles”
“Europe/Paris”

-version Display the emulator’s version number.  
UI -dpi-device <dpi> Scale the resolution of the emulator to match the screen size
of a physical device.
The default value is 165. See also -scale.
-no-boot-anim Disable the boot animation during emulator startup. Disabling the boot animation can speed the startup time for the emulator.
-no-window Disable the emulator’s graphical window display.  
-scale <scale> Scale the emulator window. <scale> is a number between 0.1 and 3 that represents the desired scaling factor. You can
also specify scale as a DPI value if you add the suffix “dpi” to the scale value. A value of “auto”
tells the emulator to select the best window size.
-raw-keys Disable Unicode keyboard reverse-mapping.  
-noskin Don’t use any emulator skin.  
-keyset <file> Use the specified keyset file instead of the default. The keyset file defines the list of key bindings between the emulator and the host keyboard.
For more information, use -help-keyset to print information about this topic.
-onion <image> Use overlay image over screen. No support for JPEG. Only PNG is supported.
-onion-alpha <percent> Specify onion skin translucency value (as percent).

Default is 50.
-onion-rotation <position> Specify onion skin rotation.

<position> must be one of the values 0, 1, 2, 3.
-skin <skinID> This emulator option is deprecated. Please set skin options using AVDs, rather than by using this emulator
option. Using this option may yield unexpected and in some cases misleading
results, since the density with which to render the skin may not be defined.
AVDs let you associate each skin with a default density and override the default
as needed. For more information, see
Managing Virtual Devices with AVD Manager
.
-skindir <dir> This emulator option is deprecated. See comments for -skin, above.

Emulator Keyboard Mapping

The table below summarizes the mappings between the emulator keys and and
the keys of your keyboard.

Table 2. Emulator keyboard mapping

Emulated Device Key Keyboard Key
Home HOME
Menu (left softkey) F2 or Page-up button
Star (right softkey) Shift-F2 or Page Down
Back ESC
Call/dial button F3
Hangup/end call button F4
Search F5
Power button F7
Audio volume up button KEYPAD_PLUS, Ctrl-5
Audio volume down button KEYPAD_MINUS, Ctrl-F6
Camera button Ctrl-KEYPAD_5, Ctrl-F3
Switch to previous layout orientation (for example, portrait, landscape) KEYPAD_7, Ctrl-F11
Switch to next layout orientation (for example, portrait, landscape) KEYPAD_9, Ctrl-F12
Toggle cell networking on/off F8
Toggle code profiling F9 (only with -trace startup option)
Toggle fullscreen mode Alt-Enter
Toggle trackball mode F6
Enter trackball mode temporarily (while key is pressed) Delete
DPad left/up/right/down KEYPAD_4/8/6/2
DPad center click KEYPAD_5
Onion alpha increase/decrease KEYPAD_MULTIPLY(*) / KEYPAD_DIVIDE(/)

Note that, to use keypad keys, you must first disable NumLock on your development computer.