You should always keep bumping your minSdk version for the Android app. Newer API levels (OS versions in Android) come with more fixes and features that you can start using. But if you’re required to make that case, this document should help.
What you get:
Android Studio currently already provides a neat listing (with a picker and all) everytime you create an Android Studio project. For the lazy, i’ll include a screenshot from each of those APIs.
If there’s a feature not on that list, that you think is worth calling out, send a PR and we’ll add it here!
Sometimes there are terrible bugs/limitations with OS versions (or the phone manufacturer variant of that OS). If you notice these and want to make the world for AndroidDev better, send a PR and we’ll add it here!
Features that are not user facing:
There are programmer facing features like language features (Lambdas, method references, try with resources) that are hugely critical for developers. These are usually not called out in that new Android Studio project creator listing. If you know of these and want to make the lives of other AndroidDev better, send a PR!
minSdkVersion 25 (7.1) Nougat
minSdkVersion 24 (7.0) Nougat
- Multi-Window Support
- Java 8 language features and API (Note: some of the known and loved features like Lambdas and Method references are already available via Android Studio. However certain other features like Streams, functions, FunctionalInterface etc. are only available from 24. See linked doc for details).
minSdkVersion 23 (6.0) Marshmallow
Removes Apache HTTP client. Compulsory to use HttpURLConnection class for API calls.
Removes programmatic access to the device’s local hardware identifier like MAC or Bluetooth address.(From now onwards WifiInfo.getMacAddress() and the BluetoothAdapter.getAddress() methods will return a constant value of
minSdkVersion 22 (5.1) Lollipop
minSdkVersion 21 (5.0) Lollipop
ART runtime support
64-bit NDK support
Optimized multidex in dev builds (Faster build times)
AnimatedVectorDrawablesupport (none of the ugly workarounds required if you use the native version. Read this post).
JobScheduleruse (i.e. if you’d rather not use Firebase JobDispatcher)
Introduced Camera2 API
minSdkVersion 19 (4.4 – 4.4.4) KitKat
- Chromium based WebView, which is still a WebView…, but far less horrible, fragmented and vulnerable compared to the WebViews before 4.4.
- “Lossless” WebP support. Actually lossless was made available in API 18 but when those in the know were asked for suggested minSdk (for WebP), they suggested 19.
- Java 7 try-with-resources
minSdkVersion 18 (4.3.x) Jelly Bean
minSdkVersion 17 (4.2.x) Jelly Bean MR1
- Samsung bug with RTL (you need to have some padding on everything, otherwise Samsung will blow up cause they overrode or had their own version of rtl before Android had it built in?). Listen to this Fragmented episode with Dan Lew where he talks about it.
- WebP support (but not lossless, see note in API 19)
Locationobjects send back elapsed realtime nanoseconds (this is important for getting the “age” of the location fix)
minSdkVersion 16 (4.1.x) Jelly Bean
- Sony has a
setPaddingRelativethat risks a stackoverflow error.
minSdkVersion 14 (4.0.1 – 4.0.2) Ice Cream Sandwich
- Holo theme introduced
- USB On-The-Go support.
minSdkVersion < 14
No, don’t use anything below 14 please.