It frustrates me when I read about how Android fragmentation drives developers away from Android and into the comfort of iOS. This isn’t to say the issue people are attempting to address — mainly that there are way more Android devices than iOS devices, the devices run various versions of the OS and are even highly customized — doesn’t exist, but I’ve been programming Android on a daily basis for more than two years, and I have yet to encounter a situation that had me cursing Android fragmentation. I cannot say the same for Web development.
Let’s consider these facts:
- There are hundreds of different Android devices out in the wild, compared to a handful of iOS devices.
- The hundreds of different Android devices have a vast array of combinations of screen sizes and resolutions.
- The hundreds of different Android devices vary wildly in the hardware they sport, from single-core 600 MHz processors to dual-core 1.5 GHz monsters. Some have a mere 256 MB of RAM, while others tip the scales at 1 GB.
- A majority of these Android devices are not on the latest and greatest version of Android.
So what? In my opinion, Web browsers are much more fragmented than Android. One of the most difficult aspects of Web development is making your Web app look and behave exactly the same across various Web browsers. It’s difficult enough when you’re faced with supporting the latest iteration of each of the main Web browsers, but the difficultly is compounded when you are required to support older versions of the browsers too.
For instance, a couple months ago, a client informed me that I would have to make the Web app I have been developing/growing for him over the past several years support IE6, a browser that has been on the market for more than 10 years. I’m sure you can imagine the terse words that were exchanged after this bombshell was dropped on me. I begrudgingly did it and nearly pulled my hair out at times while attempting to get every feature/style working across every browser in such a way that supported (or rather catered to) IE6.
Compared to Web apps and browsers, getting Android apps looking and working consistently across various devices, screen sizes, and pixel densities is a walk in the park. From the bucketing of layouts and resources for different display sizes, to the “dip” (density-independent pixels) measurement system and the CSS-like styling, Android provides an easy way to address this concern if you put in the time to learn it.
I’ve heard from quite a few iOS developers that the pixel-perfect way of styling iOS layouts is quite a bit less desirable than the free-form way of styling Android layouts, which makes sense. When was the last time you styled a Web page by positioning all elements on the page absolutely? Hopefully never.
Addressing older versions of Android
The latest platform distribution chart on Android’s Developer site indicates that nearly 56% of Android devices (with access to the Android Market) are on Gingerbread (Android 2.3), which was released in December 2010. Additionally, 30% of Android devices are on Froyo (Android 2.2), which was launched a year before Gingerbread.
While it may seem odd that nearly one third of Android devices are still on version 2.2, we must also consider that not all devices are created equal. As Android matures and becomes more resource intensive, the basic hardware requirements also advance. One of the reasons Android has been such a smashing success is due to the proliferation of cheap, low-end phones in the market.
Therefore, it’s not fair to assume that all Android devices ought to be upgraded to the latest and greatest version of Android. It’s the same reason the iPhone 3G can’t upgrade to iOS 5. There just happen to be quite a few more Android devices that don’t “make the cut.”
What do you think?
Share your opinions about Android fragmentation in the comments.