Hacker News new | ask | show | jobs
by bombs 5701 days ago
I know that Android's OS versions are more fragmented, because they're controlled by Google, handset manufacturers AND carriers (in contrast to the iPhone being solely controlled by Apple), but I always thought hardware, not software, fragmentation was the big issue.

There are about 80 different Android smartphones that have been released according to Wikipedia. That is more than what RIM have released in the last 15 years, including their pagers and carrier-specific versions, and a lot more than the 4 iPhones and 5 webOS smartphones.

I can't speak much about consumer-side of things, but as a developer, I can tell you that developing for iOS and webOS is easier and cheaper because there are less devices. I test on every iOS and webOS device, but on less than 10% of the available Android devices, because of the cost caused by so many devices.

2 comments

In theory this is no big deal. For most apps the only difference you would take care of is screen resolution and this is handled pretty good by Android. You would have to check in source code for different capabilities of course (if you can read the location from GPS/Wifi or not, for example). But that's also no big deal.

One thing to worry about though, is that it is possible that different hardware uses different drivers. I've read about one game that did run very poor on a particular Samsung device, because the OpenGL driver had a bug or missing feature.

The framework does a pretty good job for abstracting the different capabilities and supporting different hardware (on a phone). When manufacturers produce buggy hardware drivers, that's where you need to dig deep.

> In theory this is no big deal.

I'm reminded of that saying:

"In theory, there is no difference between theory and practice. In practice, there always is."

I was doing iPhone development back when there was only 2 generations of iPod Touch and 1 generation of iPhone. In theory, they ran the same platform. In practice, there were several subtle differences between the hardware capabilities and resources on each permutation -- and that was assuming you were running the exact same OS version, which, in the wild, is not always true. A game that looked and worked perfectly on say my iPhone would have a weird glitch on a Touch. And so it had to be tested and tweaked to run well on each. Since then, they've added several more hardware generations of Touch and iPhone, and now also the iPad, and now there are more OS versions in the wild too. Yes, thankfully, Apple allows you to build your app so it officially only supports a narrow subset of these platform permutations. But in practice, your clients/employers often want you to support a wider set. Re-enter fragmentation pain. And this is in the iOS ecosystem, which should be less fragmented than Android.

I did write "in theory" more because i've not developed for Android in a long time, and only know from the beginnings of Android that they did a pretty good job in supporting different devices. At that time there only was the HTC Dream and the emulator, so i can't speak of experience with such a big range of Android phones nowadays. I only know that the apps i've written back then should "in theory" also run on the Nexus One without problems.

As you are talking about games, i can imagine that this is much harder on Android as you can't rely on the built-in UI-Framework and have to handle different resolutions yourself.

In practice you do run into cross-device issues, though. For instance, the ConnectBot SSH client has a glitch that makes it impossible to type the pipe character with the custom Sense virtual keyboard on the HTC Incredible. But it works fine on stock Android.
To be specific; Angry Birds on a non-Galaxy Samsung phone has problems rendering the ground, so every level looks like a snow level.

Alsa support on Samsung devices is also buggy, resulting in problems with various apps, especially sip clients.

Sounds like someone could make a killing running a testing business that stocks every Android phone model.