When developers and industry people talk about the mobile OS scene, the word “fragmentation” is often mentioned. What is meant is that iOS is essentially out there in one version – on a very few sets of hardware (differentiated by resolution and processing capabilities) that can easily be targeted/un-targeted with a check-in-a-box.
Android on the other hand, exists on a market where hardware is essentially unknown until runtime. Screen resolution and processor/GPU could be anything. The operating system itself also leaves some fragmentation. Currently, there are at least three major Android versions in use (depending on how you count them) – please refer to Platform Versions on the Android developer site. The part that is actually targeted when mentioning “fragmentation” is the “API Level” – currently, there are 11 such to target for Android developers – fragmentation.
When I develop apps for Android, I really don’t see fragmentation as a real problem. There are countless guides about selecting the right API level for your app – which is actually very easy – just go with the smallest you can. The diversity in screen size and device capabilities would be a problem – except we (yeah – I really mean the most of us) have a background in “real computer” application development or web development. Have a look at the video standards resolution illustration the browser display statistics and the OS platform statistics. Do you see the pattern?
In my opinion, fragmentation is not really a problem. We deal with it everywhere we develop software. In every piece of software that we write, we need to manually check something, add maximum or minimum sizes to UI components, check for camera support, check for network connection, e.g., – It is not Android that is fragmented – it is iOS that is not-fragmented.