Google addresses Android fragmentation for devs

Google has announced a major change to the way the Android Market operates which it hopes will help address the fragmentation issues currently experienced by developers.

Android, which was acquired by Google in 2005, has proven a roaring success. The mostly-open-source mobile platform powers a huge array of smartphones, and is beginning to make significant inroads in the tablet market against Apple's mighty iPad.

Not everyone is happy, however. The nature of the platform means that fragmentation is rife, with many cheaper devices shipping outdated versions of Android in order to avoid costly licensing fees or the time required to re-write drivers to accommodate changed APIs in new releases.

A buyer can go into an electronics shop today and walk out with a brand-new device running on anything from Android 1.5 to Android 3.1, with a screen that varies from a tiny low-resolution single-touch resistive display to a high-definiton multi-touch display of more than 10 inches.

Each new Android release brings with it new APIs, changed requirements, and additional facilities missing from the prior releases. As a result, certain optimisations are possible on one Android release that you can't achieve on prior versions, with a perfect example being the 3D framework Renderscript being available in Android 3.0 'Honeycomb' and above only.

The result is a real pain for developers. If an Android app wants to take advantage of Renderscript, the resultant program will only be compatible with Android 3.0 and above. That's a small portion of the market, so developers may produce a cut-down version missing the 3D features for other devices.

These two versions need to exist separately from each other: prior to the latest update, each application in the Android Market can be associated with a single application package file, or APK. As a result, developers need to list their app multiple times.

Let's imagine an RSS reader. The basic version might be listed under the name thinq_reader; a version for tablets might be called thinq_readerHD; while the Renderscript-enabled top-end release would be uploaded under the name thinq_reader3D. The basic functionality of the app is the same in all cases, but the system requirements are different: the first works on any Android version, the next on a large-screen device running Android 2.0 or higher, and the last only on Android 3.0 and above.

Instead of promoting a single app, the developer needs to drive traffic to each app individually. A user browsing the Android Market website might see thinq_reader3D and dismiss it upon receive a warning about device compatibility, little realising that there's a version of the software that would work fine with their particular device.

Google's modifications to the Android Market change that. Now, a developer can have a single app with multiple APKs on the market. As a user goes to install the app, the most appropriate version - thinq_reader, thinq_readerHD, thinq_reader3D - is downloaded as required.

It's going to make a major difference for Android developers. "When you upload multiple APK files, Android Market handles them as part of a single product listing that aggregates the app details, ratings, and comments across the APKs," explains Google's Eric Chu in a blog post. "All users who browse your app’s details page see the same product with the same description, branding assets, screenshots, video, ratings, and comments. Android Market also aggregates the app's download statistics, reviews, and billing data across all of the APKs."

While the modification to the Android Market doesn't address the core issue of fragmentation within the Android ecosystem, it certainly goes some way to managing it. That's going to be increasingly important to Android's continued growth: say what you will about the closed ecosystem of Apple's iOS, but fragmentation is much less of a problem when you control every aspect of the platform's distribution.