We just post updates to Advanced Ruler (Pro), Advanced Protractor (Pro) and Advanced Bubble Level (Pro) to fix the compatible issues with Android 1.5 and 1.6. Please give them a try if you are on those firmware versions.

[Developer’s talk]

We used to support all levels but in the last update to fix the camera preview issue on Galaxy S, we broke the compatible because we used a Android 2.1 only method. Because of that, Android 1.5 and 1.6 users would get a force close with a VerifyClass error. In a regular Java program, we just need to add a “if” statement to check the version first and only call the Android 2.1 only method if the Android version is 2.1 and later. However on Android, this workaround doesn’t work. As long as a class uses a new method, no matter it is triggered during runtime or not, a VerifyClass error will be thrown when VM tries to load it. So we end up using reflection to call the method. Not fun at all. I also noticed some publishers post different apk files for Android 1.5. This doesn’t sound like a good solution as it will force users to purchase it again when he/she upgrades its phone’s firmware. If Android market support several apk files for the same app on different Android version, it would be a useful feature.

Anyway, the good news is more and more users are moving to 2.1 and 2.2. I just found the following updates on Android developer website. Only 17% people are still on Android 1.5 and 1.6 which is considered as “old” version. The data is collected during two weeks end on December 1, 2010. No wonder no that many people complained about the compatible issues on our apps.

Platform API Level Distribution
Android 1.5 3 6.3%
Android 1.6 4 10.6%
Android 2.1 7 39.6%
Android 2.2 8 43.4%

Here is the historical distribution.

[Source: http://developer.android.com/resources/dashboard/platform-versions.html]