During development of the SMS Bot Widget I encountered some issues with running it on the different versions of Android. The SMS API changed in Android 1.6 and the contacts one changed in Android 2.0. Coding for 1.6 and then attempting to run it on 2.1 meant that some nasty bugs cropped up such as not all contacts appearing in the configuration screen. In order to make the code run on everything from 1.5 up I had to use reflection.
Catering for multiple OS versions is part of the problem with fragmentation of Android but at least it can be worked around. If APIs change or new features get added, applications can still be written to run on old versions whilst utilising the latest functionality. It takes more effort but its worth it in order to have such a rapidly evolving platform. There have been 6 new versions since the T-mobile G1 was launched in the US in October 2007. As a developer I like getting my hands on new toys to play with.
However, as an Android phone buyer fragmentation is confusing and frustrating. New devices are being announced all the time running anything from Android 1.5 to 2.1 with different custom UIs. Customers can’t be sure when or if they will get updates for a device in the future. Also devices get released so quickly, that even a few months after release they’re outdated. I suppose these are the prices we pay for choice and rapid progress.