33

How should I make the choice ? What are the parameters I should take into account ?

Robert
  • 369
  • 1
  • 3
  • 3
  • 1
    Considering the pace of Android releases, any information given here would be obsolete withing 6-12 months. Thus my vote to close. – Milan Babuškov Feb 24 '12 at 21:51
  • 3
    Not if you can reuse the information to make a choice even in the future – Shervin Asgari Mar 26 '13 at 13:00
  • 1
    Note that "developing for old versions" is not the same as "targeting an old API". See this quote from the docs, " You can still build your app to support older versions, but setting the build target to the latest version allows you to enable new features and optimize your app for a great user experience on the latest devices.". Source: http://developer.android.com/training/basics/firstapp/creating-project.html – Andrew Martin Oct 03 '13 at 11:56

9 Answers9

32

First of all you should take into account relative number of devices running a given version of the Android platform

Denis Palnitsky
  • 17,589
  • 13
  • 44
  • 55
12

Have a look at Android versions market share. I would develop for 1.6+. If you will realize in the middle of development that you want some API feature from newer version, you will have 3 choices:

  1. Don't use that feature
  2. Detect Android version from the app and then decide what to do
  3. Change required Android version in your manifest file and project settings
fhucho
  • 31,862
  • 40
  • 125
  • 178
4

If possible, you should support the oldest Android version still in widespread use. That would be 1.5. If you need features from later versions, you might consider requiring newer versions, but if you can do your work on the oldest version still available, you should to increase the number of people who are able to use your app.

Brian Campbell
  • 289,867
  • 55
  • 346
  • 327
4

The Oldest version that supports all the functionality your application requires.

For example: Your app needs multitouch? Target version 2.1

My application doesn't need any functionality introduced in newer versions, so I target 1.5

lheezy
  • 502
  • 2
  • 7
  • 16
3

I agree with the answers posted above, and I would add that on the android API reference site, most of the time the minimum API level is specified (http://developer.android.com/reference/android/package-summary.html). You can have a look at this page to identify the Android version associated with a given API level: http://developer.android.com/guide/appendix/api-levels.html

GôTô
  • 7,771
  • 3
  • 30
  • 42
3

Personally, I develop everything for 2.1. There are only a handful of devices that still run <2.0 and most of those people have already put custom roms on them already. I know it kind of screws people with older phones, but I don't like the idea of crippling my app just to make it backwards compatible.

Also I feel like developing for >2.0 encourages people to upgrade their phones =P

Falmarri
  • 44,586
  • 38
  • 140
  • 186
2

@Falmarri: I see some flaws in your logic. Usually I'd tend to follow the same path as you if I'd be developing on another Plattform, like Windows. I do my C# applications always against the latest (non-beta) version available, as the .NET Framework is freely available for everyone (take out the new releases not being available for Win2k, which is almost 10 years old now).

With Android this attempt don't work. A majority of the devices which run 1.5 and 1.6 do it because there is no update for this device, as the manufacturer stopped developing new versions for this phone (either to motivate users to get a new upgraded one) or because it's to time intensive to make backports to this "old" devices.

So this uses don't have the "free choice" of upgrading their phones. Technically it's possible of course with rooted/custom ROMs, however most users do not have the technical knowledge to root/flash their devices with custom ROMs or don't want to lose their warranty.

So if you want to offer your App to as much people as possible, you have to develop it in mind with a much older OS version. In Android case, against 1.5.

And this is basically what I do. I've done my Apps with 1.5 in mind.

Tseng
  • 52,202
  • 10
  • 166
  • 183
1

If you are developing using Android Studio: 1. Go to Tools --> Android --> AVD Manager 2. Click the Create Virtual Device... button of the AVD Manager dialog. 3. Select a Device on the "Select Hardware" wizard page of the dialog and click Next. 4. In the bottom right of the "System Image" wizard page you will see the following:

API Level Distribution Chart Link

If you click the "API level distribution chart" link, it will provide you a summary of cumulative distribution by API level. I assume the information is kept up-to-date with each release. From there you can click on an API level to get specific information about that API level. Based on the information presented there, you need to use API level 18 or lower in order for about 75% of the current Android Market to be able to use you application.

API Level Distribution Chart

Perhaps this is the type of information you are looking for. Hope it helps!

Mitselplik
  • 969
  • 1
  • 10
  • 15
  • One additional comment - in order to support testing against Google Play services, the minimum API you may use is API Level 21 apparently. – Mitselplik Apr 30 '16 at 19:09
  • That information can also be found [here](https://developer.android.com/about/dashboards/index.html#Platform), and they update it regularly (last month the most recent one) – DarkCygnus Jul 26 '17 at 23:57
0

This is a direct quote from the Android Docs:

Generally, it’s a good practice to support about 90% of the active devices, while targeting your app to the latest version.

In a practical sense, this is impossible unless you had an unlimited budget.

Even Android themselves are only releasing security updates from version 8 onward.

As of right now, I recommend supporting Android 7 onward. This should cover 57.9% of market share.

If you scroll to the bottom of this page, there is a table that shows Android support information.

It will be updated monthly as the figures I quote above will change with time.

Gaj
  • 293
  • 2
  • 10