A couple of huge additions to the Android SDK and NDKhave appeared over the past couple of weeks, largely to gounnoticed. They are massive changes that will alter the course ofthe platform.
- The NDK can now target x86 alongside armeabi and armeabi-v7a.These can all be packaged as ABIs in a single APK, meaningconceptually an Android application making liberal use of the NDKwould be usable on a ridiculous range of devices. This is importantbecause GoogleTV has been running on x86, and Google is opening upthe Android toolchain to target it as well.
- When you create an AVM in the AVD Manager, a new, but currentlydisabled droplist lets you select the CPU/ABI, defaulted to thehistoric ARM. It is likely to be enabled in a soon to comeupdate.
- The toolkit comes with a new emulator-x86 runtime, allowing youto run x86 Android images.
Aside from the growth of the targeted platforms (while many arecounting Intel out, I expect Intel to loom very, very large onmobile devices and tablets through 2012), this may solve the #1issue with Android development: The horrific lack of usability ofthe emulator.
Unlike on the iPhone where during development you run against ax86 virtual iPhone, often running much faster than an actualdevice, in Android land the emulator is QEMU running ARM code, veryvery slowly. It is technical magic, but the result is close tounusable even for the most trivial of application.
Running an x86 virtual machine on x86, on the other hand, shouldoffer close to native performance. The difference in usabilityshould be profound.
I dug through the code to try to find a way to hack out an x86instance, however the necessary images are currently missing.However given the supporting rudiments, I would be surprised if x86emulator and AVD support, offering dramatically better performance,didn’t make a showing in the next couple of months.