August 1, 2014

Which Version of Android Should I Develop For? (Part 1)

Android has a whole lot of platform versions, splintering the market. For some developers it’s really hard to choose between compatibility and new features. Developing for Android 2.2 means that you’ve got lots of new and handy features, but there’s still a lot of phones with an Android version below 2.2, which means your app won’t run on most phones.

Pie chart of devices that accessed the Android Market within a period of two weeks, data collecting ended on October 1, 2010

As you can see, Android 2.1 Eclair has the biggest market share, followed by Froyo. Froyo offers some real nice features, like a new Dalvik-compiler, offering a 2-5X better app performance for CPU-heavy tasks. You can find a complete list of changes over here.

For these kinds of apps, Froyo is definitely the best choice:

  • Games. Froyo uses a new Dalvik-JIT (Just In Time) compiler which offers a 2-5X better performance on CPU-heavy tasks, as mentioned above. Most Android-phones don’t use a GPU, which means that everything is done by the CPU, and that’s exactly what Froyo is optimized for. This picture shows a few Froyo benchmarks compared to benchmarks of Android 2.1, just to give an indication of how fast Froyo is. Android 2.2 also offers a few new APIs for OpenGL ES 2.0, but those are just minor updates. Multitouch was already available in Android 2.1, Froyo has just improved it a bit.
  • Apps that use a lot of storage. With the introduction of Froyo, you don’t need to root your phone in order to put apps on your SD-card anymore. Froyo offers a native option to install apps on your SD-card, saving costly storage on your phone. Of course installing apps on your SD-card gives a performance-drawback sometimes.
  • Apps with an embedded WebView. The browser has been given a huge performance-boost through the new V8 Javascript rendering engine, giving it a much better Javascript performance. Watch an example below:
  • Apps that require a lot of processor-capacity. This is exactly the same story as the first point (Games). The biggest improvement in Android 2.2 is the performance, thanks to the new JIT-compiler. Take a look at this video, it shows two phones with the same 1GHz processor, the Motorola Droid 2 and Droid X. The left phone runs Android 2.2, the right one Android 2.1
  • Buggy apps. Well, it might sound a little strange, but if you’re developing buggy apps, you should definitely develop on Froyo. Google has built in a new error-reporting system, making it much easier for developers to see where the errors in their app are located.

That were all the advantages, but of course there are also a few disadvantages. In fact, all the disadvantages are related to one thing: Android apps aren’t downwards compatible. This means that if you develop an app for Android 2.2, it won’t run on Android 1.6 or 2.1. Meanwhile, apps are sure thing upwards compatible.

If you don’t care about you’re app getting downloaded less, I would definitely recommend Android 2.2. If you want to reach as many devices as possible, I recommend developing for Eclair, you’ll reach about 75% of all Android devices, fairly enough I suppose.