⌛ This article is now 10 years and 7 months old, a quite long time during which techniques and tools might have evolved. Please contact us to get a fresh insight of our expertise!

Speed up your Android Emulator!

If you develop applications for iOS and Android, you probably have used the iPhone Simulator and the Android Emulator. There is no real issue with the iPhone simulator, but Google one is very, very, very slow. It is so painful to debug with it that if you develop on Appcelerator’s JavaScript-based Titanium SDK, you only use the iPhone Simulator every time, except when you want to test something specific on Android.

The Android Emulator is based on QEMU (the Quick EMUlator) which emulates an ARM processor on your computer which has a x86 processor. I surely don’t need to explain why emulate a processor by a software isn’t a very good idea if you want something reactive and usable. Furthermore, other hardware features are also emulated by the software. All those things combined plus the fact that smartphones have some very powerful chipsets lead to a very slow emulator.

Section intitulée ok-but-what-can-i-do-about-itOk, but what can I do about it?

First thing to do is to launch the Android SDK Manager, go to your Android SDK’s installation folder, and type:

$ ./tools/android

Capture of the android SDK manager

You can see that there is an “Intel x86 Atom System Image” available for Android 4.2.2, 4.1.2, 4.0.3 and 2.3.3. Select the versions you want to test and install them. If you scroll at the bottom of this screen, you’ll see an “Extras” folder, expand it and select the “Intel x86 emulator accelerator (HAXM)” to download it. You have to install it. To do so, go to your Android SDK’s installation folder, then go to extras/intel/Hardware_Accelerated_Execution_Manager/ and execute IntelHAXM.dmg.

Now that you have installed everything, you need to configure your devices, just use the “Tools” menu to launch Android Virtual Device Manager (AVD Manager). There’s a list with all your devices, just create a new one. If you select a target that has an x86 image (let’s try with Android 4.2.2), you should be able to switch the CPU/ABI to “Intel Atom (x86)”. This configuration with the HAXM driver, easily installed, will let you run a faster emulator. We can go further! Edit the device configuration and check the “Use GPU Host” in the “Emulation options” section, it will allow the emulator to use the computer GPU instead of emulating one.

The new Virtual devioce creation screen

Ok, our device is ready. Just test it.

$ ./tools/emulator -avd Test_for_fast_emulator -wipe-data -no-boot-anim -cpu-delay 0
$ ./platform-tools/adb install ../Test/build/android/bin/app.apk

YEAHYYY! It’s fast!

An animated gif because we are HAPPY

Section intitulée how-do-i-do-this-with-titanium-studioHow do I do this with Titanium Studio?

If you use Titanium Studio, you can configure the Android Emulator to use the x86 image too.

Titanium Studio capture

Click on ‘Run Configurations”, select the project you’re working on and then choose the version of Android you want to test with the label “x86”:

Configure the run configurations in Titanium Studio

Launch the Emulator, it should be faster, but not as fast as the one we’ve created using the AVD Manager because we didn’t select the option to use the GPU host. Launch the AVD Manager, you’ll see a new device which use a x86 CPU. Edit it.

Enable GPU emulation to improve performance

You can see an Hardware section, click on “New”, select the “GPU emulation” property, and then switch its value to “yes”, save, relaunch your emulator, and there it is, fast and usable!

Protips©: In the Hardware section, also add the “Keyboard support” property, and set its value to “yes”, save, and relaunch the emulator, you’ll be able to use your keyboard to fill some form, or whatever!

Section intitulée please-notePlease note…

Don’t forget… you have to test your application on several real devices to ensure that the app works properly on different screen sizes, or hardwares. Keep in mind that smartphones have less bandwidth, or less battery than your computer.

Commentaires et discussions

Nos articles sur le même sujet

Ces clients ont profité de notre expertise