Android Fragmentation Isn't Hurting Its Adoption
Nerval's Lobster writes "Apple's developer Website offers a new, handy graph of iOS fragmentation — which, of course, highlights that the mobile operating system isn't fragmented much at all. A full 93 percent of iOS users are on iOS 6, the latest version; another 6 percent rely on iOS 5; and a mere 1 percent use an earlier iOS. Compare that to Google Android, which really is fragmented: some 33 percent of Android devices run some variant (either 4.1.x or 4.2.x) of the 'Jelly Bean' build, while 36.5 percent run a version of 'Gingerbread,' which was first released in December 2010 — ancient history, in mobile-software terms. (Other versions take up varying slices of the Android pie.) For years, Google's rivals have used the 'Android is fragmented' argument to hype their own platforms. But is Android's fragmentation really hurting the platform? Not as far as global shipments are concerned. According to recent data from research firm IDC, Android's market-share stood at 75 percent in the first quarter of 2013 — up from 59.1 percent in the same quarter a year ago. Meanwhile, iOS owned 17.3 percent of the market — compared to 23.1 percent in the year-ago quarter. Whatever the drawbacks of fragmentation (and people can name quite a few), it's clear that it's not really hurting Android device shipments or adoption."
It has everything to do with being able to develop for phones. The article misses the point entirely.
As someone who develops for both, testing in Android *is* a pain in the ass. Developing in it is a breeze. The minor issues you run into on varying handsets is just a nightmare to deal with. The small variances because manufactures can't develop to API specifications correctly.
I question anyone who says it isn't an issue. Either you aren't doing development or you haven't built something complex enough to see the various issues.
Most of it's that the "fragmentation" in Android really isn't visible at the developer level. Sure you've got a lot of versions. But in general the API changes between versions don't break backwards compatibility: if you wrote code for API level 8 (Android 2.2), it's almost certainly going to run just fine on a device running API level 17 (Android 4.2.2). It mostly comes down to picking the minimum API level that supports all the features you need and writing to that. There's only a relatively few places where you need to explicitly handle differences, eg. coding for "If the device supports NFC then hook up the handlers for it, otherwise don't bother.". Most of those are just like that, simple feature tests: does this device have GPS, does it have a camera, and so on. Only a small minority are truly complicated to handle and need special coding based on the Android version.
It's a lot like cars. There's how many car manufacturers, and how many hundred different models? Yet when you sit down in one you don't worry about that huge degree of fragmentation. The controls will mostly be where they ought to be and the ones that aren't aren't safety-critical and aren't that hard to figure out, and while the shape of the fenders and design of the taillights may change the looks dramatically that doesn't really impact your ability to drive it.
With android you just use the compatibility library and you get all the newest features.. even on a phone several years old. https://developer.android.com/tools/extras/support-library.html
http://soylentnews.org/~tibman