See Also Recipe 1
1.5 Set Up an Android Virtual Device for Apps Testing |
Solution
Use the Android SDK's device emulation toolkit to configure combinations of devices and operating systems. Testing on various combinations reduces issues related to hard- ware differences in devices.
Discussion
Android devices are manufactured to cover a wide market, from low cost to high spec- ification and high value. Android has also been in the marketplace for more than a couple of years. For these reasons there are a wide range of devices with a wide range of hardware options and operating system versions being used. A successful Applica- tion (App) will be one that can run on such a range of devices. An App developer will only be able to test on a very small range of physical devices. Fortunately a developer's confidence in their App can be boosted by using an Android Virtual Device (AVD). A complied App can be tested on a physical device or a virtual device. An AVD is an emulation of an Android platform on a host machine, usually the development ma- chine. AVDs simplify testing for these reasons:
• Multiple AVD configurations can be created to test an App on different versions of Android.
• Different (emulated) hardware configurations can be used, for example GPS or no GPS.
• An AVD is automatically launched and your compiled App is installed on to it when the 'Run' button is pressed in Eclipse.
• You can test your App on many more combinations of Android version and hard- ware versions than physical devices you possess.
• Testing on AVDs greatly reduces the amount of testing required on physical devi- ces.
• AVDs can be used alongside a physical device.
• You don't need to handicap you physical device to induce error conditions, e.g. testing on a device with no SD card, just set up an AVD with no SD card.
• An AVD can simulate network events without the costs involved in using a physical device, e.g. simulate phone calls or send an SMS between two AVDs.
• Simulate GPS data from an AVD from different physical locations without moving from your desk.
• When App users report bugs you can try and mimic their hardware configurations using AVDs.
Please note that on older development machines and when emulating larger Android devices the performance of an AVD will be less than that of a physical device.
An AVD can be configured using the 'SDK Manager' program (opened directly from the file system or from within Eclipse). It is also possible to create AVDs from the command line.
To create an AVD with the 'SDK Manager' load the program. When using Eclipse select 'Window' from the menu bar and then select 'Android SDK and AVD Manager'. The program can also be started directly from the file system. For example in Windows open 'C:\Program Files\Android\android-sdk\SDK Manager.exe'. If started directly from the file system 'SDK Manager' will check for SDK updates, in which case press Figure 1-7.
'Cancel' to go to the main window, titled 'Android SDK and AVD Manager'. If opened from Eclipse the main Window will show without the check for updates to the SDK. The left hand column of the main window will list 'Virtual Devices', 'Installed packages' and 'Available packages'. 'Virtual Devices' should already be selected, if not select 'Vir- tual Devices', any existing defined AVDs will be listed in the right hand table. If the Android SDK has just been installed no AVDs may be listed.
To create an AVD select the 'New' button. The 'Create new Android Virtual Device (AVD)' window will load.
The following fields are used to define an AVD:
Name
Give a name to the new Android device that is to be emulated. Make the name de- scriptive, for example if emulating a device with a version 2.1 operating system and medium resolution screen (HVGA) a name such as Android-v2.1-HVGA is better than AndroidDevice.
Target
This is the version of the Android operating system than will be running on the emulated device, as an example for a device running version 2.1 this will be set to "Android 2.1- update1 - API Level 7".
SD Card
Here you specify the size of the devices emulated Secure Digital (SD) card, or select an existing SD card image (allowing the ability to share SD card data amongst different AVD emulations). To specify a new SD card enter the size in MiBs for the card. Re- Figure 1-8.
Figure 1-9.
member that the bigger the number the bigger the file created on the host computer system to mimic the SD card. Alternatively select the 'File' option and browse to an existing SD card image (on a Windows machine the 'sdcard.img' files will be found in the sub-folders of the 'avd' directory under the '.android' directory in the logged on users folder).
Snapshot
Check the 'Enabled' box if you want the runtime state of the emulated device to persist between sessions, useful if a long running series of tests are being performed and when the AVD is closed you do not want to have to start the tests from the beginning. It also speeds up the start up time of an AVD.
Skin
Here you select the screen size for the device, a list of common screen sizes is presented e.g. HVGA, QVGA etc. The list will vary depending on the operating system version. Alternatively a custom resolution can be entered.
Hardware
The table under the hardware option allows the AVD to be configured with or without certain hardware features. To change features first add them to the table using the 'New' button (a couple of features will be added and default automatically based on the 'Tar- get' selected). A dialog will open to allow the selection of a hardware property. For example select 'GPS support' then 'OK'. Select 'yes' next to 'GPS support in the table and change it to 'no'. The AVD will not support GPS.
The AVD supported properties are: Table 1-4. AVD Supported Properties
Description Camera support Boolean yes or no
This determines if the AVD supports the detection of a camera. Max VM application heap size
integer megabyte value
The maximum size of the heap an App might allocate before being shut down by the system. Abstracted LCD density
integer 120/160/240/320
Approximate density (dots per inch) of the AVD screen, 120 is low density, 160 for standard or normal density, 240 is high density and 320 is extra high density.
Cache partition size integer megabytes xxxMB
This sets the size of cache used by the browser. SD Card support
Boolean yes or no
Support for a SD card. Cache partition support Boolean
yes or no
This determines whether a browser uses a cache. Keyboard support
Boolean yes or no
This controls emulation of a physical keyboard (as opposed to an on screen one). Audio playback support
Boolean yes or no
Support for audio play back.
Description Keyboard lid support Boolean
yes or no
Can the emulated keyboard be opened and closed. Audio recording support
Boolean yes or no
Support for recording audio. DPad support
Boolean yes or no
This indicates emulation of a directional pad. Maximum vertical camera pixels
integer pixels height
This determines the height of photos taken with the camera. Accelerometer
Boolean yes or no
Can a tilt and movement device be detected. GPS support
Boolean yes or no
Can Global Positioning System data be provided. Device ram size
integer megabytes
This determines size of the AVD's memory. Touch screen support
Boolean yes or no
This determines if the AVD supports operation via the screen. Proximity support
Boolean yes or no
Description
Support for a proximity sensor. Battery support
Boolean yes or no
Support for simulated battery power. GSM modem support
Boolean yes or no
This determines emulation of telephony abilities. Trackball support
Boolean yes or no
Support for a trackball.
Maximum horizontal camera pixels integer
pixels width
This determines the width of photos taken with the camera.
When the required fields have been defined the 'Create AVD' button is pressed to gen- erate the AVD. The AVD will now be listed on the 'Android SDK and AVD Manager' window.
The AVD is ready to be launched using the 'Start...' button. It is also ready to be selected in a project configuration to test an App under development. When the 'Start...' button is pressed the 'Launch Options' window is shown.
The options at launch are: Scale the display to real size
On larger computer monitors you will not normally need to change the AVD scale. The dpi of the Android screens is greater than the standard dpi on computer mon- itors; therefore the AVD screen will appear larger than the physical device. If nec- essary this can be scaled back to save screen space. Use this option to get the AVD to display at an approximate real size on the computer monitor. The values need to be set so that the AVD screen and keyboard is not too small to be used. Wipe user data
When the AVD is started the user data file is reset, any user data generated from previous runs of the AVD is lost.
Launch from snapshot
If 'Snapshot' has been 'Enabled' for an AVD then after it has been first launched subsequent launches are quicker. The AVD is loaded from a snapshot and the Android operating system does not need to start up again. Although when the AVD is closed the shutdown is longer because the snapshot has to be written to disk. Save to snapshot
When the AVD is closed the current state is saved for quicker launching next time; although close down is slower as the snapshot is written to disk. Once you have a snapshot you can uncheck this option so closing an AVD is quick as well, though any changes since the last snapshot will be lost.
Use the 'Launch' button to start the AVD. Once loaded it can be used like any other Android device and driven from the keyboard and mouse of the host computer. Error Message on Windows when Launching
When trying to launch an AVD on a Windows installation an error with the de- scription beginning invalid command-line parameter may occur.
To fix this problem change the path to the Android SDK directory so that it does not contain any spaces. The default installation path for the SDK is in C:\Program Files\Android. The space in Program Files needs to be removed. To do this and maintain a valid directory name Program Files needs to be converted to its Micro- soft DOS format (also referred to as 8.3 format). This is usually the first six letters in upper case followed by a tilde and the number 1, i.e. PROGRA~1. If other di- rectories start with Program followed by a space then the number may need to be increased. To see the DOS format for the Program Files directory on your machine open a Command Prompt (via Start->All Programs->Accessories). Change to root Figure 1-12.
(type cd\ and press Enter) and run dir/x, the directories DOS name will be displayed next to its full name.
In Eclipse use the Windows->Preferences menu option and select Android, in the SDK Location field change Program Files to its DOS version.
See Also
http://d.android.com/guide/developing/devices/emulator.html