Google Android vs iPhone OS fragmentation
Over on the Android Blog today, Dan Morrill, Open Source & Compatibility Program Manager posted his opinions on the topic of Android fragmentation, and how he sees it’s not an issue to worry about:
“Fragmentation” is a bogeyman, a red herring, a story you tell to frighten junior developers. Yawn.
I’m an iPhone developer, so I find the loosely-bound world of the Android OS quite intimidating. Taking just three features into consideration (version of Android OS, screen resolution and presence of a multi-touch interface), an Android developer has 12 possible feature combinations to consider when planning an Android app. An iPhone developer has 3 (at most - more on that later).
To illustrate the differences between the two platforms, I’ve drawn up an infographic (above). Devices are divided between OS version, touch interface and screen resolution. You can decide if things look fragmented.
Android
The Android graphic shows a total of 12 possible combinations of OS version, screen resolution and multi-touch interface (although this is a minority feature). The operating system version is the highest available for each device. As Android hardware is varied and the individual releases of each version of the OS are determined by the hardware vendor, a range of combinations is present. Resolutions also vary with a range of pixel densities and aspect ratios, the most common being 320x480 - the same resolution as the iPhone and iPod Touch.
The Android phones featured are by no means an exhaustive representation. At the Google I/O conference in May 2010, Google boasted 60 Android-based devices on the market. The inforgraphic above shows just over a third of these.
iPhone
The iPhone OS graphic shows a single operating system as all but the 1st generation versions of the iPhone, iPod Touch and iPad hardware will be able to upgrade to OS 4.0. The 1st generation hardware is 3 years old, and is apparently old enough to be deprecated by Apple (therefore will not be supported). Multi-touch is present in all iPhoneOS-based devices. An application written to display at the 320x480 resolution will be scaled up by exactly double to display on the generation 4 iPhone’s (rumoured) 640x960 pixel display. Both 320x480 and 640x960 resolution apps will work as-is on the iPad. As such, an iPhone OS developer could develop an application at the 320x480 resolution and sell it on all three device combinations, or take a pragmatic approach and publish a unique iPad app, and two resolution versions of the iPhone/iPod Touch app.
Unfair Resolution Comparisons
I will admit I have made and unfair grouping comparison for Android phones running at 240x400 and 480x800. The latter will display apps written for the former at exactly double scale.
Compatibility According to Google
In his article, Dan Morrill says the following on compatibility between Android platforms:
We define “Android compatibility” to be the ability of a device to properly run apps written with the Android SDK. This is a deceptively simple way to frame it, because there are a number of things that can go wrong. Here are a few:
Bugs - devices might simply have bugs, such as a buggy Bluetooth driver or an incorrectly implemented GPS API.
Missing components - devices might omit hardware (such as a camera) that apps expect, and attempt to “fake” or stub out the corresponding API.
Added or altered APIs - devices might add or alter APIs that aren’t part of standard Android. Done correctly this is innovation; done poorly and it’s “embrace and extend”.
Each of these is an example of something that can make an app not run properly on a device. They might run, but they won’t run properly. These are the things that I spend my time preventing.
I decided to omit basic features such as whether or not a device has a camera, GPS or other hardware features. The Android graphic would become so unruly were I to try and incorporate all possible variation, that’d it’s cease to be useful. Finding complete specifications for all the featured Android devices also proved tricky.
What’s the Solution?
The solution to all this variation, according to Dan Morrill, is an Android Marketplace filter that only allows compatible devices to buy and download your app.
Insofar as I’m concerned, that’s not a solution at all. Such an approach reduces potential users to a lowest-common-denominator before a single line of code is written. You can never write an Android app in this case, only an app for an Android subset.
Devices Featured
iPhone OS
iPad, iPhone generations 2 (3G), 3 (3GS) and 4, iPod Touch generations 2 & 3
(6 devices in total).
Android
Version 2.2 (320x480) : Google Nexus One
Version 2.1 (320x480) : HTC Legend, HTC Hero, Motorola Quench, Samsung Moment
Version 2.1 (480x800) : HTC Evo 4G, HTC Droid Incredible
Version 2.1 (480x800) : Motorola Droid
Version 1.6 (240x400) : Sciphone N21, General Mobile DSTL1
Version 1.6 (320x480) : HTC Dream, HTC Tatoo, Motorola Devour, Samsung i7500
Version 1.6 (480x800) : Acer Liquid A1
Version 1.6 (480x854) : Sony Ericsson Xperia X10
Version 1.5 (240x400) : Highscreen PP5420
Version 1.5 (272x480) : Geek Phone One
Version 1.5 (320x480) : Huawei-U8220, LG GW620, Motorola Cliq, Samsung Behold II, T-Mobile Pulse
(23 devices in total)
Notes
Android OS versions were drawn from Wikipedi - List of Android Devices.
Though iPhone OS 4.0 isn’t on general release at the time of writing, any iPhone developer currently working on an app will being using the OS 4.0 beta SDK.
Displayed devices are not shown to scale.
Article and image originally showed 1st generation iPhone and iPods as being supported on OS 4.0. This is not the case.
Image Reproduction
If you’d like to use the infographic, feel free to do so. It is licensed under the Creative Commons Attribution-Share Alike 3.0 license. For attribution you can link back here or mention my twitter profile @Yorrike.