The recently released Android SDK Tools r12 added x86 and ARMv7 support to the emulator and AVD manager. However, the system images included with the SDK are still ARMv5 only, resulting in the AVD manager running in legacy mode with the ABI drop-down box disabled. This post will show you how to build new images from scratch.
The system images for each platform are located in
android-sdk/platforms/android-#/images/, and you’ll need to create
sub-directories for each architecture:
Until pre-built x86 images are included with the SDK, they will need to
be compiled from source.
The following steps assumes that the build environment has been
configured correctly and that repo is in your path.
Get the AOSP source code and and build the
$ mkdir mydroid; cd mydroid $ repo init -u git://android.git.kernel.org/platform/manifest.git $ repo sync $ . build/envsetup.sh $ lunch # Select 'full_x86-eng' $ make
As long as you have the environment setup by sourcing
build/envsetup.sh you can then launch the newly built x86 emulator
or copy the system images from
the correct SDK directory and launch via the AVD manager.
As explained in a post by Jean-Baptiste Queru, the x86 emulator is
architecturally similar to the ARM version, with no virtualization.
Additionally, the x86 graphics pipeline isn’t as optimized as the ARM
one yet. This means that the x86 emulator is actually going to perform
worse than the ARM emulator (for now).
If you want to run an application containing native code on the x86
emulator, you’ll need to build it using the latest NDK (revision 6)
which has the required toolchain and libraries.
To compile an application for x86 (and/or ARMv7) using the NDK, add the
desired ABIs to your
APP_ABI := armeabi armeabi-v7a x86
and build as usual with
Tip: Running android-x86 in VirtualBox is a good alternative when you need better performance and can make do without the extra features of the emulator.