top | item 3779672

The shocking toll of hardware and software fragmentation on Android development

84 points| j_col | 14 years ago |thenextweb.com

83 comments

order
[+] mrb|14 years ago|reply
This article is obviously biased toward extolling the advantages of iOS's uniformness, yet the best example it takes to argue against Android's fragmentation is an application that fails to support only 7.8% of the Android market! How is this a proof that fragmentation is causing a "shocking toll"?

For the curious, I decompiled this "Temple Run" app. It requires Android 2.2 or higher, because its AndroidManifest.xml declares the use of OpenGL ES 2.0 which was introduced in that version of Android. (And the app's minimum API level is Android 2.1.) The app also needs android.hardware.sensor.accelerometer and android.hardware.touchscreen.multitouch, but virtually all Android 2.2 devices have these capabilities.

So, effectively, Temple Run works on any Android 2.2+ device, which represents 92.2% of the devices in the wild: http://developer.android.com/resources/dashboard/platform-ve... When the developer says they support 707 of the 1443 unique devices on Android Market, this means that these 707 devices represent 92.2% of the market, whereas the article tries to present this as "only half the market is supported".

Yet another article written by an iOS fanboy trying to unfairly depict the state of the Android ecosystem... Nothing to see here.

[+] cageface|14 years ago|reply
The problem is that a lot of Android devices that claim to support these specs do so in buggy and inconsistent ways. GL shaders, for instance, sometimes have to be tweaked for individual devices.
[+] wink|14 years ago|reply
I disagree wholeheartedly, this is one of the least biased articles on iOS vs Android I have ever read.

And while I have yet to experience a single app that's not working on my not exactly new Desire Z with stock ROM (2.3.3?) apart from some games that are tabler-only), I do agree on the problem part.

The happy users won't all rate, but the unhappy ones are usually quick to downrate. A frustration I can understand as someone who used a HTC Tattoo with 1.6 for a while.

[+] sunsu|14 years ago|reply
I agree with what you're saying...mostly. However, there IS a problem with devices that ONLY meet the requirements in buggy ways due to manufacturer alterations/additions. Its silly to ignore this problem and claim it doesn't exist.
[+] btilly|14 years ago|reply
Yes, Android is a free-wheeling mess. But I am not concerned.

I see this as a replay of the 1980s. Apple was the dominant player with a premium option on nice hardware, a consolidated set of software options, and facing fragmented opposition. (Then the PC/Windows landscape. Now Android.)

Then Steve Jobs was yanked from the picture (then by being fired, now by dying), Apple lost its focus, and the fact that so many people were on the messy platform caused it to win in the marketplace.

There are big differences. Tim Cook is hopefully not as incompetent as John Sculley proved to be. Google is not Microsoft reborn.

But we've seen this before. The rule of thumb in computers for decades has been, "the commodity always wins". And Android is better positioned to be that commodity than Apple is.

[+] radicalbyte|14 years ago|reply
> I see this as a replay of the 1980s. Apple was the dominant player with a premium option on nice hardware

No they weren't. In Job's first stint at Apple he was beaten by Commodore.

Commodore were vertically integrated. They owned the company who designed the chips in early Apple computers. They focussed aggressively on price, and they won the battles with the Vic 20, C64 and early Amigas. After a bunch of crazy decisions at the end of the decade they eventually lost the war and died a death in the mid 90s.

As they say, it's the winner of the war who gets to write the history books, and in Cupertino they're done an excellent job at it.

[+] yardie|14 years ago|reply
Then the commodity is the iPad. Eventually this may change but it's 2012 and a serious competitor hasn't been built yet (going by what I've seen from CES).

There are still some major differences between the early 80s and the current market:

* IBM: They owned the office long before Apple came along and continued that dominance with their invention of PC. IBM isn't in the tablet business. RIM tried to make a play and did poorly. Increasing corporate tablet sales are going to Apple.

* Price: Compared to a Mac the PC was cheap. Nowadays tablet makers are having a hard time building <$500 tablet that will sell.

[+] schraeds|14 years ago|reply
Not to mention that the PC vs. Mac wars have come full circle. With PC's becoming completely commoditized, noone able to differentiate/ offer compelling products while Apple's market share and margins continue to grow.
[+] guelo|14 years ago|reply
This article is overblown.

In Android you don't have to support any device you don't want to, just exclude it from being shown to those users. Same with the OS version, if you don't want to support 1.6 you can make it unavailable to those users.

Most apps don't have fragmentation problems unless you're doing something tricky and hardware dependent, like trying to do fancy things with the camera. I've released several semi-popular apps with few bug complaints.

If you look at Temple Run in Play you will see it is very highly rated and it has over a million downloads. https://play.google.com/store/apps/details?id=com.imangi.tem...

Finally, the author's link to one badly voted Reddit comment with little discussion made me think he was just out to write an Android bashing article as link bait.

[+] gcp|14 years ago|reply
In Android you don't have to support any device you don't want to, just exclude it from being shown to those users.

This will: 1) Be quite tricky due to the sheer number of devices making it difficult to test everywhere. 2) Only supporting those you know to work isn't viable due to the amount of fragmentation.

Most apps don't have fragmentation problems unless you're doing something tricky and hardware dependent

How about reading from a zipped resource on storage? (10x slower on Galaxy S, in some circumstances, due to filesystem bugs) How about doing an SQL query with a JOIN? (100x slower, in some circumstances, on pre-2.3 devices due to a query optimizer bug in the SQLite version they ship) Showing a splash screen? (Top cut off on Samsung devices running Gingerbread, nowhere else. Still tracing the reason)

Finally, the author's link to one badly voted Reddit comment with little discussion made me think he was just out to write an Android bashing article as link bait.

That's a valid criticism. The author found one person that didn't want to pay a dollar, and a few hundred calling him out on being stupid.

Can we get more income comparisons between popular apps on iOS and Android? That's the real data.

[+] ericd|14 years ago|reply
I really, really hate supporting an app on Android. This is a big part of the reason for that.

As an example, at one point it apparently would simply refuse to start on the Droid X, despite running great on the original Droid I had to test it with, and the VM I set up to emulate the X. Without access to a physical Droid X, it couldn't be debugged. The app doesn't require anything from the hardware besides a GPS, so I was at a loss for what would cause this.

Because it's a huge pain to properly test new versions, I tend not to keep the Android version up to speed with the iOS version of the same app. As a result of that, I get a lot of complaints from Android users that feel short changed and bad reviews from people who feel like the app isn't keeping pace with the alternative apps (mostly they use the web app as reference).

It's just a really crappy situation. I've thought about dropping Android support, but then they would just complain that the iOS crowd get an app and they don't, so that wouldn't be much better. At least I wouldn't have a low star rating publicly attached to my brand, though.

[+] JoshTriplett|14 years ago|reply
> As an example, at one point it apparently would simply refuse to start on the Droid X, despite running great on the original Droid I had to test it with, and the VM I set up to emulate the X. Without access to a physical Droid X, it couldn't be debugged. The app doesn't require anything from the hardware besides a GPS, so I was at a loss for what would cause this.

What ended up causing that problem?

[+] huggyface|14 years ago|reply
If your Android app is similar to the screenshots, it really is quite trivial and terrible looking. I don't mean to sound harsh, but it looks like you did the absolute minimum work possible to "support" Android. Blaming feedback on the platform seems like you're being a bit dishonest with yourself.

It's also interesting that you have a lower rating, and more negative feedback (26% 1 star) on iOS than you do on Android.

[+] dendory|14 years ago|reply
I think it's very valid criticism and it can't really be compared with Windows. There's many differences:

- Windows has a lot of APIs and hardware abstraction levels. Microsoft has always been known to change things very, very slowly, and keep backward compatibility.

- Hardware makers don't mess with Windows nearly as much as they do with Android. They will install a Norton trial and that's it. They don't remove the UI and put their own.

- Microsoft acts as a gate to what innovation hardware vendors can bring in, even more so today with driver testing and signing. Remember back in the day when an OEM did something crazy you'd get BSODs from bad drivers. Now that doesn't happen anymore, because everything is so much more robust. Android is still no where near that, and Google isn't doing much, relying on the open community.

[+] huggyface|14 years ago|reply
There's many differences

None of your differences are really the differences you think they are.

Android has a lot of APIs and hardware abstraction levels. Of course it does or it wouldn't work across over a thousand devices with a pretty high degree of success.

OpenGL ES 2.0 itself is an abstraction that has allowed for lots of triple-A (relative to mobile) iOS apps to painlessly get ported to the NDK on Android.

To get the market and the Google apps -- to be a Google sanctioned Android device -- the maker has to pass the Android compatibility tests. Should they be more stringent? Absolutely, but they exist and have done a good job.

The linked article is terrible, and horrendously biased, using exaggerated language at every turn. It makes completely unsupported claims at every turn. What Android has accomplished is amazing, and the level of compatibility is incredibly high, but yes with over a thousand devices, not all of which are certified, hundreds of millions of users, and hundreds of thousands of apps, you will find problems. Big surprise.

[+] kalleboo|14 years ago|reply
What I'm curious about why it is fragmentation is such an issue on mobile devices, when it was never this big a deal on desktops. Outside of cutting-edge 3D games, Windows developers don't need to have 100 laptops to test all the different hardware permutations for their software.
[+] masklinn|14 years ago|reply
> What I'm curious about is why is fragmentation such an issue on mobile devices, when it was never this big a deal on desktops.

Stable APIs and abstractions, better renderers, ability not to go fullscreen and nobody caring about dpi. Resolutions changed very slowly, especially before the 00s and 3D games. Also culture, somewhat, probably: if the game does not work due to a bizarre combination of drivers it's the users problem.

And it's definitely not true that "it was never this big a deal on desktops", stable hardware target is regularly mentioned as a reason to go console by developers.

[+] gcp|14 years ago|reply
I would say its a much of a deal on mobile as it is on desktop. The problem is how badly Android is doing here compared to Apple. If there were only Android, the problem would be the same for the developers, but they'd accept it in return for the income.

Right now, if you can only target one platform, it's a no-brainer against Android.

Note that you say "outside of cutting-edge 3D games", but remember that games are a significant part of apps. And cutting-edge on an Android device doesn't have to mean that much.

Lastly, consider how console game sales are doing compared to PC game sales. And how developers tend to treat PC game development as a result.

[+] flyt|14 years ago|reply
- Dell, HP, Compaq, Acer, etc didn't invent entirely new UI's for the computers they sold: everybody's OS looked basically identical and had similar interface elements and metaphors.

- Screen sizes and resolutions increased slowly and didn't involve taking over the entire screen as with smartphones. Software that previously took up the whole screen at 1024x768 simply ran as a smaller window at 2560x1440 and wasn't forced to scale up to full screen.

[+] njharman|14 years ago|reply
20yrs of working to get it right. im old enough to remember all the fragmentation and end user pain in the early years after IBM PC/XT

androidVmobile is still immature market. itll sort out in a handfull of years.

[+] stephengillie|14 years ago|reply
I was going to make this exact post. I realized that:

1. a lot of this is handled by APIs

2. we still have to deal with hardware issues, such as having the correct video driver and a correctly configured OS to play non-casual videogames. Some programs refuse to work with certain hardware, like Dungeon Master 2 not running with Creative sound cards.

[+] sskates|14 years ago|reply
Dropbox had this problem actually, where certain versions of Windows would give them trouble. Luckily it wasn't hardware specific as well (AFAIK).
[+] mrb|14 years ago|reply
If you are a mobile software developer who refuses to deal with Android under the pretext it is "fragmented", you will simply be obliterated by your competition. The Android market is so large, and becoming larger every day, that other developers will gladly do the work you refuse to do. And they will succeed, just like the desktop/server software development world has learned how to cope with "fragmentation" in the Windows/Linux ecosystem by supporting the various OS versions, editions, service packs, distributions, locales, etc.

It does not matter what you think about Android fragmentation. It exists. Deal with it.

[+] rbarooah|14 years ago|reply
The point about the market being 'large' is the very thing that fragmentation undermines. What matters is how many paying customers can receive a good user experience from your app, and what this costs to provide.

You also assume that Android will continue to outpace iOS in terms of growth - i.e. the trajectory will be like the PC rather than like the iPod.

It matters very much what you think about Android fragmentation. Dealing with it has been a costly mistake for some developers, and could be for you.

[+] cageface|14 years ago|reply
Seems like a lot of devs outsource their Android ports. I think the individual iOS dev can safely ignore Android, at least for now.
[+] reidmain|14 years ago|reply
How many more years before I get obliterated? I'm going on three and business is continually climbing for iOS development.

The introduction of the iPad was an amazing boom and its adoption rate continues to soar.

I'm not going to sit on my ass and only focus on doing iOS stuff but for at least the next three years it will easily be my bread and butter.

[+] babarock|14 years ago|reply
Stop complaining about fragmentation and define yourself which devices you support!

It's crazy to think that a common OS among such a wide variety of phones is enough to achieve perfect portability. Let's take an analogy: Your Windows PC runs an OS very similar to the ATM across the street (I'm not even mentioning the wide array of platform Linux runs on). Do you really expect your app to run on all Windows machines flawlessly?

The real issue is that Google is only too happy to brag about number of Android users, or apps in their market (what's the proper naming convention now? Play?). Corporate bullshit meant to appease shareholders and attract developers.

You can sit all day complaining that Android isn't the developer paradise it was advertised, or you can be more pragmatic, restrict yourself to fewer devices and achieve quality.

But we, as developers, are greedy and pretentious. We want our apps to run on every machine possible, and be featured on top of their stupidly competitive "market".

I blame Apple for the broken model (but hey, it works for them), and Google for not knowing better.

[+] brazzy|14 years ago|reply
Do you really expect your app to run on all Windows machines flawlessly?

By and large, yes, people expect that and developers largely achieve that. But of course Windows is a much more mature platform than Android.

[+] DanBC|14 years ago|reply
> Let's take an analogy: Your Windows PC runs an OS very similar to the ATM across the street [...] Do you really expect your app to run on all Windows machines flawlessly?

Yes, I do. (With limited exceptions.)

Software often has minimum specs to run. Apart from games the minimum spec will often be for machines that are obsolete.

So (apart from games) I would expect an app created for one machine running MS Windows to work on another machine capable of running the same version of MS Windows. And those versions of Windows will last for several years.

Compare that with Android as applied to cell phones. Not everyone upgrades their phone every 18 months[1].

[+] Tichy|14 years ago|reply
Somehow thousands of Android developers still seem to manage fine. Some parts of the article made me quite suspicious that it was really an Apple marketing piece.
[+] rbarooah|14 years ago|reply
Android developers are incurring higher costs for less revenue.

That may be 'fine' but it's still a disadvantage.

[+] sehugg|14 years ago|reply
Our experience supporting both iOS and Android versions of our app for 18 months (>1M daily users) is that Android users are much less satisfied. We are twice as likely to get a support request from an Android user and those requests tend to be more complex (and qualitatively more grumpy).

For example, take push notifications. C2DM only works on 2.2 devices with a logged-in Google account, so you need a fall back push mechanism. Even with C2DM you must struggle with various challenges surrounding power management and wifi sleep. In comparison, APNS just works.

Also, Android aggressively deprecates. With ICS there's a brand new Fragments API, which to be sure has a backward compatibility library, but now you are faced with the choice of rewriting your app to fit the new UI style (and potentially confusing existing users), limping along with the old Android styles, or supporting both and making your life miserable. Hey, and don't forget landscape mode and multiple aspect ratios!

I could go on, but I'm getting negative.

[+] Zigurd|14 years ago|reply
The first sign of trouble is:

" A previously (very) successful game on iOS, it was brought over to Android in order to take advantage of the huge number of devices that run the OS."

Right. A game with graphical assets designed for a couple of fixed screen sizes and resolutions is going to have problems on a system that forces developers to handle multiple screen dimensions and resolutions.

Shocked. I'm shocked.

The one thing Android "fragmentation" (meaning whatever it means in which ever context) hasn't caused for applications that were developed for Android is compatibility problems. Android apps are remarkably compatible on hardware that they were never tested on.

There is plenty to hate about OEMs' craplets and "enhancements" - which comprise the more commonly held definition of "fragmentation" - but they have had very little effect on application compatibility.

[+] Tomis|14 years ago|reply
This very "hard" problem was solved long time ago by releasing your product along with a free demo (or shareware, or whatever). As a developer you simply have to make sure your product works on the most popular platforms, or whatever kind of platforms you want. Before the user buys he tries it, so there will be less complaints that the app does not work for them. Hardware and software will always be fragmented in a free market, and that's ok.
[+] shareme|14 years ago|reply
the article is link bait..

How do I know? Because the same fragmentation exists on iphone but smaller in quantities..to say it is not there on iphone is a bit somewhat lying like republicans..

Now lets see someone be honest about this on both platforms or STFU

[+] objclxt|14 years ago|reply
I run a 10-person development team, split 50:50 Android / iOS, under a digital agency. We build apps for carriers (account management apps), brands, etc.

From my own personal experience, which having built apps since the first iOS SDK and Android 1.6 is hopefully fairly reliable, the QA and testing burden on Android apps is considerably higher than iOS.

That in itself isn't totally surprising, because there are far more handsets on the market. But that's not the real issue: say I'm writing an app for a network carrier. Carriers typically want their apps to run on all hardware they've sold for the past two years (ie, everyone who's still under contract).

On iOS, that's iOS 3-5. Very soon, it'll be iOS 4-5 - 4 was released in June 2010.

On Android, that's 1.6, 2.0, 2.2, 2.3, 3.0, and 4.0. Because the key difference is when Apple release a new version of iOS, they stop selling the old one. But that's not the case with Android. Even today there are still phones on the market running 2.1.

When you say "the same fragmentation exists on iPhone but smaller in quantities" - I don't really think you know what you're talking about. If you're developing an app now you can pretty easily support iOS 4.3 upwards, which would cover all handsets being actively sold by Apple for the past 21 months or so (the 3GS onwards, or three phone models and two tablets)). How many Android phones running how many versions have been released in the past 21 months? Far, far more.

This doesn't inherently make Android a bad platform: lots of people choose to develop PC games even though there's a much higher testing burden that consoles (in terms of the varying environments and OS versions). I think Android is great: I'm not arguing against developing for it. But I think you'd be very hard pressed to find someone experienced with both the iOS and Android platforms who'd disagree with the notion that fragmentation on Android takes up a lot more time to deal with than iOS.

[+] cageface|14 years ago|reply
The degree of variation in iOS is nothing like what you find on Android.
[+] damian2000|14 years ago|reply
If you are a developer thinking about choosing between iOS or Android, well after reading this article the decision is easy.
[+] djmdjm|14 years ago|reply
Which part? The fragmentation or the bit about the Android version hitting "1 million downloads in just 3 days"?