Due to its origins and philosophy with respect to openness, Android is a fragmented mobile platform. This is illustrated next:

android-platforms-early2014

There are different kinds of fragmentation to keep in mind.

Android platform versions. To minimize fragmentation-related headaches, decide early on what versions of Android to support. As you can see above, Gingerbread (introduced in 2011) still commands close to 20% of the Android device distribution (data above is gathered from the new Google Play Store app). It is important to keep in mind is that the more versions you support, the more testing and maintenance and related costs that you will have.

Multiple screen sizes. When creating an Android app, you will have to decide the kinds of devices to support, for example Smartphones, vs. Tablets, each with different sizes and resolutions, and provide the appropriate assets, fonts and layouts that ensures the best possible experience across such different screen characteristics. See Design Apps for Tablets (Android Developers Blog).

Hardware support. Another kind of fragmentation is related to hardware support, for example, the supported sensors and/or UI facilities. Not all devices are created equal and different device manufacturers decide what to include. A couple of examples: not all devices may support the same kind of camera, or may or not provide support for Bluetooth or for that matter, Bluetooth Low Energy (introduced with Android 4.3 (API Level 18). NFC may or not be there. Another example is the Kindle, which is based on Android 2.3 but it doesn’t provide support for many of the hardware sensors or UI facilities found on other Android devices.

Consistent UX Design. Maintaining a consistent design is not necessarily easy and can lead to a fragmentation user experience. Learn and follow the Android Design Guidelines. Google has done a great job documenting the best design guidelines for Android apps. From design principles, to styles and patterns, to building blocks, you should spend time going over these great developer resources by Google.

The good news is that as you can see on the pie-chart above, the market is consolidating on 4.x and newer and devices are getting more consistent. The whole Android reminds me of the Java Micro Edition and Sun Microsystems back then, which wanted to be open with great intentions, but that caused a lot of fragmentation and problems. The answer to this is to enforce consistency across. Google is attempting to do so by “Forcing OEMs To Certify Android Devices With A Recent OS Version If They Want Google Apps“. Let’s keep in mind that the main reason the iPhone and iOS have been so consistent with respect to platforms version, functionality and distribution, is because Apple owns the whole stack (hardware and software). But in an open platform, consistency is very hard to achieve, especially when there is competition within the ecosystem.

/CEO

Related to this see: 5 Tips to Get Started with Android Development.