Using Intel® HAXM for Developing Android* Wear and TV Apps

By Ashok Emani, Published: 03/23/2015, Last Updated: 03/23/2015

Android* has come a long way initially starting with phones, then tablets, Google TV*, Android Wear*, Android TV* (replaces Google TV), and Android Auto*. It can be challenging for developers to build and test their apps to run on all these device types. Add to this different device form factors and display resolutions, and it can quickly become a complex app verification and testing problem. We have Intel® HAXM to the rescue.

Intel® Hardware Accelerated Execution Manager (HAXM) is a hardware-assisted Android emulator with low-overhead, excellent performance, and low latency. You can learn more about it here:

With Intel HAXM, developers can have multiple Android emulator instances running on their development system without having to worry too much about performance, load or latency issues. This can be very helpful in the iterative process of app development and testing, resulting in huge developer productivity.

Non-x86 Android emulator images can have slow start-up time and sluggish UI responsiveness. Unlike some third-party Android emulators, with Intel HAXM you can use all the latest Android API versions and platforms as soon as they are released.

For detailed instructions on using Intel HAXM please see /content/www/us/en/develop/articles/speeding-up-the-android-emulator-on-intel-architecture.html

In this blog post we will look at how developers can take advantage of the Intel HAXM emulator when developing a universal Android app that targets different Android platforms like Android Wear and TV, and device variations.

Using the Universal Android Sample App

Google recently released a sample universal app to show how developers can target multiple form factors with the same code base. Please see the following link to learn more:

This sample app showcases some of the best practices for targeting multiple form factors with the same code base. Follow the instructions in the above link to build the app. We will be using it to load x86 HAXM Emulator instances for TV, Wear and Phone in this article.

The project can be directly imported into Android Studio* and developers can take advantage of the integrated emulator features. If you prefer to use other IDEs, the following can be helpful.

If you are comfortable with cmd line, just invoke the gradle build script from sample source directory.

gradlew assembleDebug

The apk will be available at “mobile/build/outputs/apk/mobile-debug.apk” folder.

Create the AVDs for Android TV and Wear

We need to ensure we downloaded the latest Android SDK emulator images for TV and Wear, along with the standard Android image for phone/tablet.

Open the android SDK manager. You can invoke from cmd line (<Android-SDK>/tools folder should be in your path):

> android

Android SDK Manager

Next, we need to create the emulator configurations (AVDs) to use the above images.

Open the Android Virtual Device manager. You can invoke from cmd line

> android avd

Android Virtual Device (AVD) Manager

Android Wear Emulation

Create an Android Wear AVD configuration as shown.

Android Wear AVD Configuration

Click “OK”, and start the Wear emulator by clicking “Start…” in the AVD Manager Window. A screenshot of the Wear emulator after first boot, is shown below.

     Android Wear Emulator

Android Wear requires a companion app to be installed on your phone. This app is only available on the Google Play store, so it requires us to have a device with access to the store.

We need the device configured with adb debugging, and both Wear emulator and the device show up in adb devices list:

    Android adb devices

Finally, we need to forward tcp ports with,

    > adb -d forward tcp:5601 tcp:5601

The Wear emulator should now be able to connect to your device. The below screenshots show the Wear emulator in connected and disconnected states.

   Android Wear Emulator Connected and Disconnected state

Detailed instructions for creating Wear apps can be found at:

Like any android apk, we can manually install our sample app apk on the Wear emulator using the adb,

    > adb -s emulator-5554 install -r mobile\build\outputs\apk\mobile-debug.apk

Verify that it is in fact installed and available on the Wear emulator using,

    > adb -s emulator-5554 shell pm list packages | grep example

The package name for the sample app, is listed.

We can even manually run the sample app on the Wear emulator using,

    > adb -s emulator-5554 shell monkey -p -c android.intent.category.LAUNCHER 1

We now have the sample app running on the Wear emulator device.


Android TV Emulation

Create an Android TV emulator configuration (AVD) as shown.

    Android TV AVD Configuration

Click “OK”, and start the TV emulator by clicking “Start…” in the AVD Manager Window.

We can verify if the emulator is accessible from adb using

    > adb devices

Note down the emulator id (eg: emulator-55xx), which you can use as the target for adb commands. Install the apk using

  > adb -s emulator-55xx install -r mobile\build\outputs\apk\mobile-debug.apk

Finally, start the app on the Android TV emulator instance using,

  > adb -s emulator-55xx shell monkey -p -c android.intent.category.LAUNCHER 1

The sample app running on the Android TV emulator instance:


Developers can create and start as many emulator configurations/instances as needed.

Intel HAXM can be configured with appropriate memory size at installation time.

The below screenshot shows the Wear, TV and phone AVD configurations.


Here is the universal sample app running on all 3 (TV, Phone, and Wear) along with their CPU utilizations (notice the low CPU overhead):


Developers can tweak memory allocation for further optimization. We have barely scratched the surface of emulator features in this article. Please refer to for all the available config options.


*Other names and brands may be claimed as the property of others

Product and Performance Information


Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804