One of the biggest arguments I’ve heard against developing anything for the Android platform is the problem of fragmentation. Now it’s no secret that Android is the promiscuous smartphone operating system, letting anyone and everyone have their way with it, but that has led to an ecosystem that is made up of numerous devices that all have varying amounts of capabilities. Worse still the features of the Android OS itself aren’t very standard either with only a minority of users running the latest software at any point in time and the rest never making a true majority. Google has been doing a lot to combat this but unfortunately the unified nature of the iOS platform is hard to deny, especially when you look at the raw numbers from Google themselves.
Android developer’s lives have been made somewhat easier by the fact that they can add in lists of required features and lock out devices that don’t have them however that also limits your potential market so many developers aren’t too stringent with their requirements. Indeed those settings are also user controllable as well which can allow users you explicitly wanted to disallow being able to access your application (ala ChainFire3D to emulate NVIDIA Tegra devices). This might not be an issue for most of the basic apps out there but for things like games and applications that require certain performance characterisitcs it can be a real headache for developers to work with, let alone the sub-par user experience that comes as a result of it.
This isn’t made any easier by handset manufacturers and telecommunications providers dragging their feet every time an upgrade comes along. Even though I’ve always bought unlocked and unbranded phones the time between Google releasing an update and me receiving them has been on the order of months, sometimes coming so late that I’ve upgraded to a new phone before they’ve come out. This is why the Nexus range of phones directly from Google is so appealing, you’re guaranteed those updates immediately and without any of the cruft that your manufacturer of choice might cram in. Of course then there was that whole issue with supply but that’s another story.
For what it’s worth Google does seem to be aware of this and has tried to make inroads to solving it in the past. None of these have been particularly successful but their latest attempt, called Google Play Services, might just be the first step in the right direction to eliminating at least one aspect of Android fragmentation. Essentially instead of most new feature releases coming through Android updates like they have done in the past Google will instead deliver them via the new service. It’s done completely outside the Play store, heck it even has its own update mechanism (which isn’t visible to the end user), and is essentially Google’s solution to eliminate the feet dragging that carriers and handset manufacturers are renown for.
On the surface it sounds pretty great as pretty much every Android device is capable of running this which means that many features that just aren’t available to older versions can be made available via Google Play Services. This will also help developers immensely as they’ll be able to code against those APIs knowing that it’ll be widely available. I’m a little worried about its clandestine nature however with its silent, non-interactive updating process which seems like a potential attack vector but smarter people than me are working on it so I’ll hold off on bashing them until there’s a proven exploit.
Of course the one fragmentation problem this doesn’t solve is the one that comes from the varying hardware that the Android operating system runs on. Feature levels, performance characteristics and even screen resolution and aspect ratio are things that can’t be solved in software and will still pose a challenge to developers looking to create a consistent experience. It’s the lesser of the two problems, granted, but this is the price that Android has to pay for its wide market domination. Short of pulling a Microsoft and imposing design restrictions on manufacturers I don’t think there’s much that Google can do about this and, honestly, I don’t think they have any intentions to.
How this will translate into the real world remains to be seen however as whilst the idea is good the implementation will determine just how far this goes to solving Android’s fragmentation issue. Personally I think it will work well although not nearly as well as controlling the entire ecosystem, but that freedom is exactly what allowed Android to get to where it is today. Google isn’t showing any signs of losing that crown yet either so this really is all about improving the end user experience.