A couple of weeks ago I said that while Android's fragmentation problem is real, it's smaller than some make it out to be. That post generated a good discussion on Hacker News, and I was really glad to see that since I've recently had to disable comments here.
One thing that was pointed out is that fragmentation is a very real problem for game developers, and I certainly concede that. There are plenty of other legitimate reasons to complain about fragmentation.
But most of the time when I see someone complaining about Android fragmentation, it's either because they're struggling to get their app to look good on the many different sizes of Android displays, or they're upset about having to support so many versions of Android.
I came to Android development after years of creating Windows software, so to me those just aren't a big deal. I've always had to support multiple OS versions and a wide number of screen sizes. Web developers are in the same boat - they have to make their apps work on an almost baffling array of devices, browsers, operating systems and screen sizes.
I think part of the problem with Android is that wasn't until relatively recently that it was deemed popular enough to develop for. That resulted in a boat load of iOS developers and designers having to create Android versions of their apps.
These folks were used to developing for a very limited number of OS versions, and most of their customers upgraded to the latest OS very quickly. They also had to design for a small number of display sizes, which often meant they simply created 1x and 2x fixed-size graphics for their apps.
Suddenly they were faced with developing an Android app, where 1x and 2x graphics just don't cut it. And they could no longer assume that customers were using a recent version of the OS.
To these people, fragmentation must certainly be an enormous issue - especially if they continued trying to design Android apps the same way they designed iOS apps.
The obvious answer is that they should stop doing that. Just like developing for iOS had an initial adjustment period, it takes time to learn the Android way of doing things. Developers and designers who are unwilling to invest that time just end up creating crappy clones of their iPhone apps.
To those folks, I can only say: remember when you bristled at seeing second-rate Mac ports of popular Windows apps? Remember how you felt about companies that treated your choice of OS as an also-ran?
That's how you're making Android customers feel. It doesn't endear you to them, so they'll seek out alternatives. They'll switch to competitors who treat their iOS apps and Android apps as equal citizens.
But regardless of whether you're willing to do that, can you at least stop complaining about "Android's fragmentation problem" just because you have to support different screen sizes and OS versions?
There are legitimate reasons to complain about fragmentation, but those two issues are something developers have faced for many years with other platforms (and continue to do so). The fact that we have to do so with Android shouldn't be that big a deal.