I'm not an android developer, but I am curious. Why is it that testing on dozens/hundreds of platforms is considered essential for cell phones, but not for PCs? Is android just that much worse at abstracting hardware than traditional OS'es?
Because it is early days for Android still (don't forget Android is less than 5 years old), and manufactures are still doing wacky things, and people are still uncovering bugs and edge cases.
In the early days of MS-DOS compatibility was a big problem too. Magazines used to use MS Flight Simultor to test how compatible PCs were - plenty failed that.
There is a difference though: The IBM PC was the undisputed gold standard for compatibility. Software typically listed the hardware requirements as "IBM PC or 100% compatible". (Some non-IBM-compatible DOS hardware was sold, but it died out pretty quickly).
It doesn't look like there any similar gold standard is emerging for phones.
Since when do developers for PC applications reach 100% compatibility with any hardware/OS combination out there without testing on dozens of platforms? (The guy in the article with the 400 devices is trying to achieve 100% compatibility)
We use about 6-7 different devices in our Android team and cover 95% of our target audience with that. (its a VoIP/messaging app with millions of customers)
But you have to remember that the small percentage of people who have problems can post feedback that is visible straightaway to potential customers. There isn't such a negative feedback loop for PC applications. It's one of the reasons why it would be good if the Android market let you specify which hardware your app was good for.
For graphics-heavy apps, a common problem is that the OpenGL hardware and drivers on many Android devices are crappy, so some graphics problems or crashes might only happen on a specific combination of device and OS version.
I think that one reason is that the handset manufacturer thinker more with Android than they do with a traditional OS. One example is the vendor specific themes.
Another reason for the higher focus on QA is "user ratings". Before companies didn't have to worry much about not supporting all users. With mobile a small percentage of users can give you a bad rating.
The bosses are terrified about bad public ratings! :)
I'm not sure either, but I think screen size/resolution/aspect ratio and different hardware "tools" (ie cameras with different resolutions, does it have one led or 2 for flash, etc) have potential to be problems.
I don't buy this line of argument regarding app design.
Next time you fire up your image editing program on a PC resize the window to 90%, 70%, 50%, 30%. Try and use your application.
At the smaller windows sizes you just can't. There is simply not enough real estate to accommodate the UI.
Desktop applications have simply assumed you have a certain amount of real estate at some given level of technology. Anything better is usually just gravy since you have everything you need on your screen.
We know simply resizing does not work. Just try an iPhone app on an iPad at 2x.
I'd wager the points where you have to reconsider the UI are much closer together at small sizes. An extra half inch in screen size could allow just one more icon and make your app that little bit nicer to use.
Even if you fix the hardware compatibility problem (they solved it for PCs) it's still going to suck without new ways to design apps.
I'm going to go out on a limb with this claim: Developing Android apps that run across different phones really isn't any harder than developing Windows apps that run across different PCs.
The real issue, I'm convinced, is that a bunch of people with no previous development experience jumped in with the iPhone gold rush. Then these people decided to branch out to Android and are shocked and horrified when something works slightly differently on their customer's phone than when it does on their phone.
God forbid that these people should every try developing Javascript applications that have to support support IE. :-D
Almost all PC screens are big enough that you can do a reasonable application design that works well on small and large screens, at least for most applications.