Android Fragmentation is a serious issue both in the terms of device and OS version. As a developer, this has always been a discomfort development process particularly during the testing phase;
Device Fragmentation
Android as an open-source mobile OS, everyone can grab a copy and deploy it with any hardware they can assemble, as long as suitable device drivers are in-place. The impact of this is particularly serious especially when every manufacturer (e.g Samsung, HTC) is trying to churn out their own mobile phones. With this much of devices to cater, it’s a tough time for developers.
Not all released phones are android-certified. Some countries like China, locals would assemble phones with easily obtainable components and deploy it with android os, to create a cheap smartphone. These hardware are often not certified and most likely not following standard. That produces some rare-n-undiscovered problems which might not be easy to solve by developer.
Lots of Vendorssssss. Even large mobile phone vendors/manufacturers are also cooking up the problem. Vendors has been building up their market share by having a super frequent launch cycles, such that there would exist some form (different size, price tag…) of smartphone that could cover most audience’s need even they are of different target/demand. New Android phones are launching every week, sometimes, 3-5 new ones could be launched within a few days. Up til now, there’re more than 4K android devices from different manufacturers, this amount is sufficient to drown developers. (e.g. Samsung Galaxy SIII - 4.8 inch, Samsung Galaxy Note - 5.3 inch, Samsung Galaxy Note 10.1 - 10.1 inch, Samsung Galaxy Tab - 10.1 inch, Samsung Galaxy Player - 4.2inch)
Different form factors. Android is linux-based, which means the os could easily be embedded to various kind of devices, e.g. household appliances, watch, tvbox. Adding that to the 4K android phones/tablets market, creating an even wider range of gadgets. Designing UI for a watch and for a tvbox require entirely different set of experiences respectively. Full development coverage of an app for different form factors become nearly impossible.
VR(s). Optimizing graphical app such as games is not an easy task as different android devices uses different VR (e.g. Tegra, PowerVR…). Optimizing a game for older devices doesn’t necessarily mean it must work great on newer devices (a game doing well on Samsung Galaxy SII doesn’t mean it will do as well in Samsung Galaxy SIII, even tho the hardware of SIII is better). Developer at most could only do their testing on currently popular devices.
OS Fragmentation
Like any other operating systems, Android is constantly evolving, from API Level 3 to 16 (3 is the first public release?). Each release gives android devices better and better functional and design experience. Nonetheless, it also creates a headaches for development.
OS version still lag behind. As seen from the graph, Android 2.3.3 currently is still the most popular version, even though 4.0 has released quite sometime. This is largely due to vendor doing customization on the OS for branding and hardware optimization purpose. The consequence of this would be developers would be required to write fallback code and wouldn’t be able to take advantage of the latest API (e.g. ActionBar is a great addition to Android 4.0, which offers user a handy navigation bar inside an app. This wasn’t available back in 2.3.3).
Customized Android Builds. Large vendors tend to create their own customized build of OS to provide better user experience, and branding (e.g Samsung’s TouchWiz, HTC’s Sense). This created three major side-effects for both developers and users: > 1. Android OS Updates usually lag behind the official google releases in great deal, as users need to wait until the vendor finished up their customized build; > 2. Due to the ridiculous amount of different devices per vendor is manufacturing, vendors usually not able to support every single devices for a sufficiently long period, e.g. support can be ceased in a year or two for less popular models; > 3. Vendors might introduce closed-source software bugs into the OS (e.g. Certain HTC 2.3.3 builds has same android id for all devices).
Developer’s Hassle
Creating a quality app is never an easy task, and it’s made even more difficult on android platform. There’re more to care about such are Screen Size, Form Factor, Hardware Spec, OS Lag… Developers can no longer feel as comfortable and confident about their releases and effort to start with android might be relatively steep (More app in iOS than Android).If Google/Someone could offer better tools for development; More control on the device release; Some sort of automated testing services for most available devices; then it will be an awesome experience and greater ♥ for Android Dev.