Who's Afraid of Android Fragmentation?
Nerval's Lobster writes: The dreaded term "fragmentation" has been applied to Android more times than anyone can count over the past half-decade. That's part of the reason why game developers often build for iOS before Android, even though Android offers a bigger potential customer base worldwide, and more types of gaming experiences. Fortunately, new sets of tools allow game developers to build for one platform and port their work (fairly) easily to another. "We've done simultaneously because it is such a simple case of swapping out the textures and also hooking up different APIs for scores and achievements," London-based indie developer Tom Vian told Dice. "I've heard that iOS is a better platform to launch on first, but there's no sense for us in waiting when we can spend half a day and get it up and running." So is fragmentation an overhyped roadblock, or is it a genuine problem for developers who work in mobile?
"No disassemble Johnny Five!"
I'm a good cook. I'm a fantastic eater. - Steven Brust
You are confusing market share with profit share.
It's been shown in many studies that the vast majority of android users do not buy any apps and are mostly on low end devices that wouldn't be able to play the better games anyway.
That's the real reason why devs have an iOS first approach.
As more and more devices of varying features and sizes have been released by Apple, there's been more and more work developers have had to do to adopt the different sizes/features of those devices (I still see new releases on the app store that state a new feature of "Support for iPhone 5S size" or similar)
It hasn't been until recently that Apple has given developers the tools to create views that don't need to know the specifics of the device it's running on, thereby avoiding silly checks like
if(device == IPHONE) {....} else if(device == IPAD) {....}
AC comments get piped to
There'll be forks, there'll be distros that die out but ultimately choice is good. Out of all the traditional Linux distributions eventually a status quo develops of some core popular ones. Over time they fall out of favour and the critical mass slowly moves to another. In the medium term maybe some fresh eyes and fresh thinking will solve some of the current issues that plague users now. Will they have vested interests? May they take things down a path that turns out ba? At times, probably but there's a fork for that
One of the reason people developed for iOS first was the platform had users who on average had higher incomes and spent more money on apps. So if you were trying to develop an application to sell it was more likely to show a return. Also there is more piracy of apps on Android.
Software fragmentation at a high level hasn't been all that scary of a specter for Android yet. Hook into a few core APIs that pretty much work everywhere, and off you go. There haven't been any successful whole-system Android forks that have been able to challenge mainline Android with any semblance of significance in market share.
The problem is in the details of the hardware, and to a lesser degree, software implementations. Screen resolutions; GPU capabilities; the difference in performance between the slowest and fastest (non-obsolete) device on the market; highly variable amounts of storage, VRAM, network bandwidth; limited vs unlimited data plans; the amount of other crap (that may interference) that the user or manufacturer has already installed on their phone; etc. etc.
A lot of devs are starting to whitelist their apps for specific phones, or at least for specific SoC make/model/generations. Your OpenGL fragment shader may run fine on a Qualcomm Snapdragon platform with an Adreno GPU, but crash the app or the whole system on ARM Mali. Your game may get 30-60 FPS reliably on a modern Tegra GPU, but deliver a slideshow on a Droid Mini from late 2013.
And that brings me to my second point: the hardware advances too quickly. A lot of people expect their smartphone to last them 4 years, maybe longer. But if you look at how far phone specs have come since 2010, it's pretty ridiculous. Most 2014 Android games and even non-trivial business apps won't even *launch* on a phone with specs 1/10th as capable as the state of the art.
These problems are hard enough to solve on their own. Most devs don't even have time to think about supporting other core systems with forks or replacements of the core Android APIs.
...Variety of devices, Running different versions of the OS.
The first one IMHO is a strong point for Android since there's so many different devices you're likely to find what you want (cheap, expensive, large, small, metal build, removable battery...). In this respect Windows Phone also has an interesting number of devices (although infenitely less than Android) and iOS is horrible in this respect: You basically have this year's or last year's model, neither of which is exactly cheap.
The second one is definitely bad: Several versions of the OS having significant marketshare means extra work for developers, and fewer apps for users (since some require a version newer than you have). Windows Phone and iOS are much better than Android in this.
I've heard stories about "the fragmented linux landscape"(tm). And yet I've seen programs specifically targeting some other system, and I have no problem getting it going on whatever version of Linux I'm running. And when I was in university they had Sun boxen for labs (it was the target system), and I would write software on my home computer running Linux, and then change 2 lines (locations of library paths), and recompile and the software --advanced networking software-- would run without fail on the Sun boxen. I even got extra credit for making my software cross platform. And so its incompatible, just like Bill Gates has wanted all of his software to be since 1991. Except that getting rid of the "in" and making it compatible is in most cases a very minor thing. Compilers even give big fat whopping hints about how to fix things. And if you have half-a-bit of game at all, you can do the whole job in 5 minutes. Oh and one more thing about profit share vs market share: this has gone on for a long time in the computing world. Company A sells product at HighPrice, Company B sells product at LowPrice. (lets say the first is Sony and Betamax or Rambus, or the IBM and the microchannel bus; and the second is competitors and VHS or everyone else, or everyone else and the IDE bus). And the cheaper version wins out every time. As for 3rd party developers, Apple doesn't share profits with them, and a lot of people with phones are saying "I spent $5000 on a phone and now they want more for games or apps" as opposed to someone who says "I spent $300 on a phone, and now I have bux left over for 50 apps and 30 games and still have spent less than 10% of that Apple guy over there".
While there's little doubt that fragmentation does complicate development a bit, it should never have been perceived as some insurmountable issue. In this respect, the wide variation of Android hardware can be compared to the wide variety of hardware that runs Windows. Fragmentation is much worse on PCs and yet that hasn't hindered developers from releasing countless apps and games over the past several decades.