One of the main problems with Android for app developers contemplating on Android vs. iOs is the fact it is highly fragmented. On iOS you, unconsciously, know that you need only to build one version (Let’s keep the example simple) and it will work on all devices, you know that Apple is doing everything to make sure everyone has the latest version and that there is a decent level of backward compatibility. For Android developers things have turned up differently, due to the way Android is “openly” distributed, you can not be rest assured that your app will run the same way or will even run at all on your users’ devices. Different incompatible Android versions, devices with different capabilities, OEM customizations, and plain third-party OS customization turn each Android device to be different then the other and that is usually a bad sign for developers. This infographic says it all.
Android fragmentation is a topic that has been discussed and acknowledged quite thoroughly in the industry and that is not what I want to uncover here. On the aspect of the fragmentation, which has been neglected and left out of the discussion but has no lesser impact on the apps industry is the variety in terms of screen dimensions, resolutions, and input capabilities. This variety of devices input and output capabilities does not really impact you if you are developing apps with minimal user interaction. Thinking of it then it is quite hard to come up with such an example in today’s tablet/smartphone world. Most of the apps today are “intensively” focused on user experience needless to say judged totally by the experience itself. To design and develop a “good” user experience towards a single target device, with known screen and input capabilities is something feasible, taking into account even just one more device category then you are in a serious problem.
From a philosophical perspective, I think a “nature” law can be suggested on how good user experience of an app would be based on how many target platform it addresses, the more platforms targeted, the worse the experience becomes.
Few thoughts in regards to this dark side of fragmentation are:
- web technologies ease the pain a bit since they allow “clean” separation of logic and presentation where the cost of customizations for additional platforms is just marginal. Of course for some app categories, it is not an option since the experience has to be so “immersive” which makes the browser as a container too restrictive.
- gaming and content-driven apps suffer the most here
- google tries to minimize this by creating guidelines and removing the most problematic customize-able “edges” from their user interface libraries but I think the problem is more rooted then that
- if someone feels a dejavu with Java ME then I got it too:)
One practical suggestion for Google to help developers in their decision of whether to target Android is two-fold: first, admit the problem. Second, provide a live decision-making tool that will allow filtering their existing user base by their devices (or whatever info they got from activations).