Supporting and Testing your Android App on Intel x86

With the release of more and more Android devices that contain Intel x86 processors, its a good idea to check your app supports the chipset too. Most of these devices “virtualize” apps that are only built for ARM as I found out to my initial bemusement, the Galaxy TAB 3 for example runs Arrow Mania just fine. All the same, a simple compiler flag adds x86 support to your Cocos2D-X (or other platform) build and ensures Arrow Mania might just run using less processing power on the Intel x86 based devices.

1. Find your “<project>/JNI/Application.mk” file and open it in an editor.

2. Add the line “APP_ABI := armeabi armeabi-v7a x86”  (if you already have APP_ABI line edit it to look like this). Now we have added support for x86 on top of you ARM (armebi) support.

3. Make sure you have the “x86 Atom System Image” installed, see the Android SDK Manager (Windows menu):

sdkmanagerx86

4. You will need Intels HAXM emulator to speed things up, get it here: http://software.intel.com/en-us/articles/intel-hardware-accelerated-execution-manager/  and install it.

5. Open the virtual device manager and create a virtual device matching the specs in the image below (480×800 device, your target level, Intel At:

virtualdevice

6. Debug/run your app on the virtual device you just created (if you have trouble click the Run menu, Debug Configurations, click the target tab).

  • Compile your project (you will see there are extra “x86” compilations in the console window).
  • Run it in the emulator.

x86emu

So there you have it, all it took to add support was a little edit of the Application.mk file. I’ve given Arrow Mania a good test in the emulator and on a Galaxy Tab 3 GT-P5210 and as Arrow Mania uses quite a lot of the features of Cocos2D-X, I dare say it is all very stable and almost all apps should work without any further modification. Cool!

Arrow Mania, compiled to x86 running on Samsung Galaxy Tab 3