1

What Android API version would you choose to begin developing a new Java application?

Recently I got a used smartphone running Android 2.2.1. Since I never experimentend with mobile development, I decided to use it as an occasion to try to develop a new app for Android.

I worked in Java from some year, and I feel comfortable with it, so since I already work as an independent software vendor I’ll try to sell the app on the Android market if I will be able to do a good one.

I don’t want to start developing with an outdated version of the API, so a I’m asking if starting my development and learning efforts using level 8 of the Android level API is the better choose to take, or if it would be better to use a newer version of the API.

I read why is Android API level 9 obsolete? and Which Android API to use? on S.O. about the same argument, but both the questions are pretty outdated now, and I think they left some question opened.

In particular, Jan Dragsbaek said in his answer:

You should always go for the lowest possible API to use. Simply because the lower your API level is, the more users can you reach.

So looking at the current stats, you are able to reach 97.9% if you “dumb” yourself down to API level 7.

But why API level 9 is obsolete? One could not know for sure, but most likely because it had some major flaws.

Reading actual stats, this is the situation:

Platform        Codename            API-Lvl Distribution
Android 1.5     Cupcake             3       30,00%
Android 1.6     Donut               4       70,00%
Android 2.1     Eclair              7       550,00%
Android 2.2     Froyo               8       20,90%
Android 2.3     Gingerbread         9       0,50%
Android 2.3.2   -   
Android 2.3.3   -                   10      63,90%
Android 2.3.7   -       
Android 3.0     Honeycomb           11      0,10%
Android 3.1     -                   12      1%
Android 3.2     -                   13      2,20%
Android 4.0 -   Ice Cream Sandwich  14      0,50%
Android 4.0.2   -       
Android 4.0.3   -                   15      4,40%
Android 4.0.4           
Total for Android 2.2                       93,50%

Now the question is: What will I lose if I develop with level 8 of API in terms of features? And what do I gain in terms of stability or tool support?

EDIT:

I finally choose to use level 7 of the API, which offer me the features I really need to get started to experiment on my new phone. Eventually, when I think that app need some feature not available with the current level, then I will port the app to a next level of the API.

For now, I will try to follow Building a Custom Fancy ListView in Android and see if I'm missing something really useful from the beginning.

Community
  • 1
  • 1
Andrea Parodi
  • 5,534
  • 27
  • 46
  • I don't think that question adheres to the SO guidelines. It's too subjective. – Sagar Hatekar May 04 '12 at 19:47
  • I'm objectively asking what are the features and modification on the API from the version level 8 to the actual. – Andrea Parodi May 04 '12 at 19:49
  • Just develop with the new API's, and read the backward-compatible reference material at http://developer.android.com/training/backward-compatible-ui/index.html. There is no reason to limit yourself to old APIS just because most users are using that currently. In time that will change. Plus you get to play with all the new features :) – Jack May 04 '12 at 20:01
  • More of a guess: [API10](http://developer.android.com/sdk/api_diff/10/changes.html) did not add much but since it came our rather shortly after 9 all(?) devices were simply upgraded to 10 (and the 0.5% could probably upgrade too). And later devices were directly shipped with 10. So noone needs / uses 9 which makes it obsolete. – zapl May 05 '12 at 02:12

3 Answers3

2

Level 9 is obsolete because level 10 replaced it completely. Another way of saying that is that is Android 2.3.3 replaced Android 2.3, so now if you're aiming for 2.3 devices, you use the 2.3.3 API. Level 8 is not obsolete because there is not a similar API level to replace it (all the 2.2 updates were still level 8).

As for features lost, you can look at the list of all the new features in API 9 (API 10 doesn't really have any major new features but you can check it too on the same site). If you don't need any of those features, then no need to aim for 2.3.3. Same thing over again between 2.2 and 2.1; go with the lowest level that has the features you want, as you said. Speaking from experience, 2.1 provides everything you should need for regular use - internet, storage, graphics (although the advanced graphics get better as you go on), UI, etc.

2

I think that you should look at your requirements too. Draw up the API's which is absolutely necessary for your app and narrow down to the minimum Android API level which you can use. Since it is correct that your outreach will be more if you make use of lower API levels.

Having said that, if you still feel uncomfortable with lower API level and find yourself restricted then you can infact use Android Support Libraries. Quoting from the description of the support library:

The Support Package includes static "support libraries" that you can add to your Android application in order to use APIs that are either not available for older platform versions or that offer "utility" APIs that aren't a part of the framework APIs. The goal is to simplify your development by offering more APIs that you can bundle with your application so you can worry less about platform versions.

sultan.of.swing
  • 1,090
  • 1
  • 12
  • 23
0

You will neither gain nor loose nothing much.

Level 9 is obsolete as compared with level 10. Level 9 is GINGERBREAD and Level 10 is Gingerbread Maintenance Release 1 i.e. bug fixes.

Level 8 is 2.2 level 7 is 2.1 they are not obsolete, just old.

Alexander Kulyakhtin
  • 47,782
  • 38
  • 107
  • 158
  • I don't well understand why you say level 9 is obsolete while level 7 is not. Is not it older then level 9? – Andrea Parodi May 04 '12 at 19:59
  • 1
    'Obsolete' does not mean 'older'. It means 'having been replaced by something'. They replaced API 9 with API 10 because there were bugs in that release that had API 9. They never replaced API 7 – Alexander Kulyakhtin May 05 '12 at 06:05