Summary of Android fragmentation
It’s a word that gets thrown around a lot in the media circles when describing Android devices. Usually it’s by die-hard Apple fans, or simply people who’ve heard it and thought that the word sounds cool and makes them appear smart.
There was huge outcries when the (currently) latest Android-4.0 Ice Cream Sandwich was announced and they left off support for a lot of the earlier devices that people had, but were still functioning. Devices like the Samsung Galaxy S and the HTC / Google Nexus One (Googles first flagship device). While these devices were ~2 years old, many people still expected support for these devices and expect them to be running the latest and greatest. When that doesn’t happen, you hear the echoes of a million journalists writing “fragmentation will destroy Android” and other similar titles about how Android is “fragmented” and the OS versions aren’t standard across all devices, with many running older and outdated versions of Android.
You know what, they’re quite possibly right…
However, at the end of the day, I’m not sure how much this matters?
If we take a step back and look at a few things first, we’ll find that not only is Android “fragmented” by the media standards of the word, but so is Apples iOS that runs on their iPhones, iPod Touches and iPad, and other OS’s around the world. It’s not just the OS either, but the devices and capabilities themselves.
Taking a look at the current state of Android ( http://www.androidcentral.com/ice-cream-sandwich-now-1-percent-all-android-devices-gingerbread-still-rise ) you can see that the latest OS released at the very end of last year has achieved a mere 1% adoption! That’s nothing in the grand scheme of things, considering there is over 700,000 new Android devices being activated every day.
What amuses me the most is where people seem to think this issue is Android-specific.
Taking a look at the second most popular smartphone OS, iOS, you’ll also see that the Apple ecosystem is also relatively fragmented. Even Steve Jobs seemed to think that Apples “way of life” was better, and that Android was doomed ( http://www.macrumors.com/2011/04/20/apple-on-android-fragmentation-lte-steve-jobs-involvement/ )
It’s funny though because if you look at how things have evolved, from the original iPhone which had a 620mhz CPU underclocked to 400mhz and a 320×480 screen resolution with 128MB of RAM. Next year they brought out the iPhone 3G. Same spec.
Choice, no ‘fragmentation’ so far.
Then we get to the iPhone 3GS which doubled the RAM and increased the CPU speed a little. Some Apps would only work on just the iPhone 3GS, and on top of that, some would work on the iPhone 3G, but only after you had rebooted the phone so that there was enough free memory. I remember several games would crash and burn HARD on my iPhone 3G unless I did a restart immediately prior to playing them. Then, if a call came through, I’d have to lose wherever I was up to and restart the phone again after the call to get back into the game.
Then came the iPhone4, with a dual-core CPU and a 640×960 screen resolution, and double the RAM of the 3GS. We also got the iPad, which had a totally “screwy” resolution by comparison, of 1024×768. So we’ve now got 3 different screen resolutions, 3 different CPUs, 3 different RAM amounts, and we’re not even at the most current of devices.
Don’t forget that iOS4 came out at this time, and it just didn’t want to work on anything less than the iPhone 3GS. Kiss goodbye the latest versions for your iPhone 3G. This was about the time when I sold mine and moved to Android. Technically it was possible to install it, but you’d have to be *crazy* because it was so insanely slow and left you with even less RAM to fire up apps.
Then there’s the iPad2, which has the same resolution as the first, but it’s got a dual-core CPU CPU and a more powerful graphics processor in it.
So now as an iOS developer, some phones have iOS4, some don’t. Some phones have dual-core CPU’s, some don’t. Some have iOS3, some *can* run iOS4 (The 3G) as their highest, some can run iOS5. Thankfully you only have two resolutions. The earlier iPhone models, the later iPhone models, and the iPads.
You’ve got the possibility of 3 different graphics processors on the phones alone… This is starting to smell rather fragmented to me!
“BUT WAIT!” I hear you cry “Apple only supports the latest and the previous generation”. Super, so currently we have the iPhone4 and the 4S. We’ve got the iPad and the iPad2. No matter which way you look at it, if you’re developing a game, that’s still multiple different resolutions you have to work with, multiple different graphics processors, and you’re lucky because as it stands, the iPhone4 and 4S are pretty similar to each other, as well as to the iPad and the iPad2. Bring on the iPhone 5 and the iPad3, and things will get real hairy with yet *another* resolution thrown in to the mix.
Heck, while we’re at it, if iOS devs can discount certain devices, why can’t Android devs? They say “Oh we don’t develop for the original iPhone, iPhone3G or the 3GS coz they can’t run the latest iOS5″. Well screw it, lets afford that same ability to pick and choose to Android devs. No developing for anything less than Froyo. So thats the latest *three* versions of Android. Froyo (2.2), Gingerbread (2.3) and Ice Cream Sandwich (4.0). Heck lets even throw in Honeycomb(3.*) into the mix coz it’s pretty similar to ICS and you’re going to be developing for ICS so why not. So now as an Android app developer, you’re discounting about 9% of the *oldest* devices which are running 1.5, 1.6 or 2.1 according to http://developer.android.com/resources/dashboard/platform-versions.html
Screen resolutions, lets just take the standard of 480×800 which almost all medium to high end phones have had now for over 2 years, and we’ll also add in the 320×480 which all mid-range phones have. You’re ruling out the lowest of the low end phones here such as the Vodafone 845. Tablets run either one of those resolutions, or 1280×720. Suddenly its starting to sound like you’re supporting about the same range of system specs as you would with iOS.
So just how fragmented is Android?
Is fragmentation a good reason not to develop for a platform any longer?
What about the fragmentation of OS versions? Less than 10% of *all* Android devices, tablets and phones, run 2.1 or lower. I wonder how many iOS devices are running iOS4 and lower, or even iOS3 and lower…
How much does this really matter? How much extra work is it to support an older device? I guess it depends on how much penetration you’re hoping for your app to get, and granted games are significantly more difficult to write for older or slower devices. However, if you’re a mobile-gamer (as an end user) and you’re wanting to play all the latest and greatest games, then just like on your PC, you’ll need a relatively new / decent device in order to do-so.
Did fragmentation stop the PC from succeeding?
There’s currently Windows XP, Windows Vista and Windows 7 out there, but Microsoft sure succeeded didn’t they? You don’t hear PC app developers bitching “Oh but there’s too many different hardware configurations to support”. No! Definitely not!
They say “If you want to play this game, then these are the minimum recommended specs your PC has to have. These are the ideal recommended specs too”. If your PC doesn’t match up, you can’t run it.
In fact, the Android Market in particular is pretty cool coz when you search for an App, if you’re not running a pre-defined version of Android that the author says is OK to run, you don’t even see the game. Same for if your device is known to have a tiny screen resolution.
Personally, I’m *over* the whole “Android is Fragmented” argument, it’s stupid and largely irrelevant. If you’re going to program for Android, you’re going to do it regardless of the fragmentation. If not, go program for iOS instead, that’s perfectly fine if you want to. Better still, you could be a real man and program for both OS’s.
In closing, I leave you with this: http://www.youtube.com/watch?v=Ktoalz6PbXc