Two years ago I declared that Android’s supposed “fragmentation problem” was overblown.
I was working on Glassboard when I wrote that post, and Glassboard hadn’t become a Google Play “staff pick” yet so it still had a fairly small audience. These days I work on WordPress for Android which has a much larger audience, so I figured I’d revisit the fragmentation topic.
I’ve seen a lot more fragmentation-related problems since working on WordPress, but I still maintain that fragmentation is less of an issue than is commonly believed.
That’s not to say, of course, that it isn’t a problem at all.
I think the biggest problem is that unless your app is relatively new, you probably have to continue supporting Android 2.3. Making sure your app works on that ugly, buggy OS is a massive pain. Every Android developer I know will dance in the streets the day they can drop support for pre-ICS versions of Android.
Another problem is the number of inexpensive, low-powered Android devices in use – especially outside the US. If you want your apps to run well on them, you have to be extra-cautious about memory consumption and performance (but then, you should be anyway).
Overall, though, I haven’t found the number of devices to be as big an issue as the number of OS versions. Here’s a breakdown of the different Android versions our customers are running:
This isn’t as big a deal as you might think, but it’s not unusual to find your app works flawlessly on the latest version of Android yet breaks on a previous version due to a bug fixed between releases. The Android Issue Tracker is a big help in these situations.
The only other oft-recurring problem I’ve encountered is differences between phone and tablet versions of your app, but these are usually self-inflicted (often caused by having too many screen-specific layouts and not synching changes between them).
I’m sure these issues look horrific to iOS developers, who are blessed by only needing to support a few devices and OS versions. But they’re certainly not as horrific as the press often makes fragmentation sound, and they’re far easier to deal with than all the fragmentation problems I encountered back when I developed for Windows.
6 thoughts on “Android’s Overblown Fragmentation Problem Revisited”
Kudos to you for making your app work across so many Android versions. On the Apple train, developers quickly abandon devices that aren’t running the latest OS, and until the iOS 7 release was imminent the App Store wouldn’t let older devices download older application versions that were compatible. I’m still bitter at how fast my first-generation iPad was relegated to junk status.
Fragmentation issues multiple quickly the closer you get to lower-level system functionality. If you are doing pure Java dev to display views based around server REST data, then sure, fragmentation isn’t much of an issue. Introduce a music playback service, mo problems. Video playback? Way mo problems.
Have to agree with you, Greg. With Glassboard, video was – by far – the biggest source of problems due to device differences.
I also agree with Greg. The app I work on plays live video. The Android video player is the least standard part of Android with which I’ve had to work. It seems every device manufacturer alters the AOSP code in order to work with their device’s hardware.
The Nexus 5 seems to have either a hardware or kernel bug when playing videos of sufficiently high bitrate, causing the device to reboot. Some devices ignore where the surface is placed in the UI and just play back video where ever they want. There are a grand total of 2 error codes for you to handle (one of which is “unknown error”) http://developer.android.com/reference/android/media/MediaPlayer.OnErrorListener.html .
Fragmentation isn’t an issue when you are doing simple things. Screen size and pixel density are the shallow, easy-to-see differences upon which media jumps. And I agree that these things aren’t so difficult of a problem. If that is what people said was the fragmentation issue, it would indeed be overblown. But the real problems I run into are things which are less visible; things which are less easy to write about for a general-audience. I firmly believe android fragmentation is a problem, but not for the reasons most people seem to write about.
As a side thought, the Facebook app has to patch Android memory to fix bugs just so their app will load. https://www.facebook.com/notes/facebook-engineering/under-the-hood-dalvik-patch-for-facebook-for-android/10151345597798920 I think you would be very hard pressed to find another major platform where the fragmentation problem is this bad. But again, it isn’t the screen sizes…
I’m not sure I’d use Facebook’s hacks as evidence of problems with the OS. I haven’t read the new article you linked Chris, but I remember reading the old article and thinking why are they doing these insane things. I can’t remember the details anymore, but some of their design choices were what caused their problems. All the Android code I develop is using Java. No real time sound, video or games. But then isn’t that the vast majority of the apps? And I wouldn expect that specialized apps would need some care. I have never coded iOS apps, so have no benchmark. But coming from PCs and Java, Android programming has generally been a pleasurable experience.
Reblogged this on /jdrch.
Comments are closed.