I've been reading a lot about fragmentation of Android - multiple devices, form factors, versions, operators, certificates. This is nothing new, it's exactly the same as happened with Java and Symbian. And it's a solved problem.
At Rapid Mobile I automated the whole fragmentation solution with ThinkPhone Deliver, an intelligent provisioning system. Other people adopted conditional-compilation solutions such as J2ME Polish, Wurfl and no doubt other approaches. Yet many of these new entrants building mobile apps for the first time are running around wringing their hands and wailing. It's a solved problem guys, learn from our early adventures!
No need for the iPhone fanbois to look smug either. Loads of fragmentation between all the different models, ranging from API support to plain performance issues. Older devices, such as my first generation iPod Touch, are no longer being updated and most of the recent apps I've tried fail or are so slow that they are painful.
Plus ça change...