Android Versions Numbering and API Levels
The table in this article lists all the different versions of Android, starting with the earliest Application Programming Interface (API) level to the latest API level. Thus the list is from the oldest Android versions to the latest.
Android Versions by Name, Number, Availability and API Level
Each version of Android used to be given a public name. The name was of a dessert, cake or sweet, e.g., Gingerbread, Froyo, Jelly Bean, etc. Then they stopped that and reverted to number versioning. Though sugar-based code names have always been used internally (see the Wikipedia article linked below). This sugar-laden picture shows some of the names used for the earlier Android versions or the treats hidden in the VERSION_CODES
field.
Android versions have sugar-based names in their version codes.
This table lists the public version names, version numbers, first release date and Application Programming Interface (API) versions, along with the equivalent Software Development Kit (SDK) constants (Build.VERSION_CODES). The Android version number on a device is normally found in the settings. Select Settings, then About Phone or About Device and look at the Firmware Version or Android Version entry.
List of Android Versions and Their Names, API Level and Dates
Name | Version | Available | API | VERSION_CODES |
---|---|---|---|---|
N/A | 1.0 | October 2008 | 1 | BASE |
N/A | 1.1 | February 2009 | 2 | BASE_1_1 |
Cupcake | 1.5 | May 2009 | 3 | CUPCAKE |
Donut | 1.6 | September 2009 | 4 | DONUT |
Eclair | 2.0 | November 2009 | 5 | ECLAIR |
Eclair | 2.0.1 | December 2009 | 6 | ECLAIR_0_1 |
Eclair | 2.1 | January 2010 | 7 | ECLAIR_MR1 |
Froyo | 2.2 to 2.2.3 | June 2010 | 8 | FROYO |
Gingerbread | 2.3 to 2.3.2 | November 2010 | 9 | GINGERBREAD |
Gingerbread | 2.3.3 to 2.3.7 | February 2011 | 10 | GINGERBREAD_MR1 |
Honeycomb | 3.0 | February 2011 | 11 | HONEYCOMB |
Honeycomb | 3.1 | May 2011 | 12 | HONEYCOMB_MR1 |
Honeycomb | 3.2 to 3.2.6 | June 2011 | 13 | HONEYCOMB_MR2 |
Ice Cream Sandwich | 4.0.1 to 4.0.2 | October 2011 | 14 | ICE_CREAM_SANDWICH |
Ice Cream Sandwich | 4.0.3 to 4.0.4 | December 2011 | 15 | ICE_CREAM_SANDWICH_MR1 |
Jelly Bean | 4.1 to 4.1.1 | July 2012 | 16 | JELLY_BEAN |
Jelly Bean | 4.2 to 4.2.2 | November 2012 | 17 | JELLY_BEAN_MR1 |
Jelly Bean | 4.3 | July 2013 | 18 | JELLY_BEAN_MR2 |
Kit Kat | 4.4 to 4.4.4 | October 2013 | 19 | KITKAT |
Kit Kat | 4.4W to 4.4W.2 | June 2014 | 20 | KITKAT_WATCH |
Lollipop | 5.0 to 5.0.2 | November 2014 | 21 | LOLLIPOP |
Lollipop | 5.1 to 5.1.1 | March 2015 | 22 | LOLLIPOP_MR1 |
Marshmallow | 6.0 to 6.0.1 | October 2015 | 23 | M |
Nougat | 7.0 | August 2016 | 24 | N |
Nougat | 7.1 to 7.1.2 | October 2016 | 25 | N_MR1 |
Oreo | 8.0.0 | August 2017 | 26 | O |
Oreo | 8.1.0 | December 2017 | 27 | O_MR1 |
Pie | 9.0 | August 2018 | 28 | P |
10 | 10.0 | September 2019 | 29 | Q |
11 | 11.0 | September 2020 | 30 | R |
12 | 12.0 | October 2021 | 31 | S |
12L | 12.1 | March 2022 | 32 | S_V2 |
13 | 13.0 | August 2022 | 33 | TIRAMISU |
The above table was derived from the following sources:
- https://developer.android.com/reference/android/os/Build.VERSION_CODES.html
- https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels
- https://source.android.com/source/build-numbers
- https://en.wikipedia.org/wiki/Android_version_history
Note that some release dates are derived from the Android developers' documentation, the actual SDK availability may have been a little earlier, see the Wikipedia article.
When programming an App the API level is used to determine whether specific Android features are present or not. The API level can be read with
int APILevel = Build.VERSION.SDK_INT;
Though in versions prior to Donut (Cupcake, 1.1 and 1.0) this was used:
int APILevel = Integer.parseInt(Build.VERSION.SDK);
(Build.VERSION.SDK is deprecated, i.e. it will be removed from the API at some future release).
When using functionality from a later API, but the App needs to support earlier Android versions, wrap the newer functionality in a separate class. Then check the API level before instantiating the class to prevent a VerifyError exception from occurring. See the article Support Multiple API Versions in Android.
See Also
- For a full list of all the articles in Tek Eye see the full site Index.
Author:Daniel S. Fowler Published: Updated: