Android 開発時にOSのバージョンによってメリットの書き方が変わったり、APIが非推奨(Deprecated)になることがあります。(is Deprecated as of api)
Androidは古いバージョンを利用されていることが多いため簡単には古いバージョンは非対応にできません。インストールできる対象端末が減ってしまいます。
また最新のAPIを利用時「minSdkVersion」の低い端末では利用することができず実行時エラーが発生します。
さらに、Android Studio では警告が出ます。
Call requires API level 3 current min is 21
そこで、実行する端末のOSによって処理を変える必要があります。
バージョン毎に処理を変える方法
端末のバージョンを取得し〜以上、以下、指定のバージョンで処理を切り替えます。
細かくバージョンの処理を分ける場合は「when」を大きく分ける場合は「if」で切り替えると良いでしょう。
if の場合
if(Build.VERSION.SDK_INT == Build.VERSION_CODES.O) { // API26 の処理 }
when の場合
when { Build.VERSION.SDK_INT == Build.VERSION_CODES.O -> println("O") Build.VERSION.SDK_INT == Build.VERSION_CODES.N_MR1 -> println("N_MR1") else -> println("I don't know version.") }
バージョンの種類
API バージョン | 変数名 | OSバージョン | リリース日 |
1 | BASE | 1.0 | 2008年10月 |
2 | BASE_1_1 | 1.1 | 2009年2月 |
3 | CUPCAKE | 1.5 | 2009年3月 |
4 | DONUT | 1.6 | 2009年9月 |
5 | ECLAIR | 2.0 | 2009年11月 |
6 | ECLAIR_0_1 | 2.0.1 | 2009年12月 |
7 | ECLAIR_MR1 | 2.1 | 2010年1月 |
8 | FROYO | 2.2 – 2.2.3 | 2010年6月 |
9 | GINGERBREAD | 2.3 – 2.3.2 | 2010年11月 |
10 | GINGERBREAD_MR1 | 2.3.3 – 2.3.7 | 2011年2月 |
11 | HONEYCOMB | 3.0 | 2011年2月 |
12 | HONEYCOMB_MR1 | 3.1 | 2011年3月 |
13 | HONEYCOMB_MR2 | 3.2 – 3.2.6 | 2011年5月 |
14 | ICE_CREAM_SANDWICH | 4.0 – 4.0.2 | 2011年10月 |
15 | ICE_CREAM_SANDWICH_MR1 | 4.0.3 – 4.0.4 | 2011年11月 |
16 | JELLY_BEAN | 4.1 – 4.1.2 | 2012年6月 |
17 | JELLY_BEAN_MR1 | 4.2 – 4.2.2 | 2012年11月 |
18 | JELLY_BEAN_MR2 | 4.3 – 4.3.1 | 2013年7月 |
19 | KITKAT | 4.4 – 4.4.4 | 2013年10月 |
20 | KITKAT_WATCH | 4.4W – 4.4W.2 | 2014年6月 |
21 | L LOLLIPOP |
5.0 – 5.0.2 | 2014年11月 |
22 | LOLLIPOP_MR1 | 5.1 – 5.1.1 | 2015年3月 |
23 | M | 6.0 – 6.0.1 | 2015年10月 |
24 | N | 7.0 | 2016年8月 |
25 | N_MR1 | 7.1 – 7.1.2 | 2016年10月 |
26 | O | 8.0 | 2017年8月 |
27 | O_MR1 | 8.1 | 2017年12月 |
28 | P | 9.0 | 2018年8月 |
29 | Q | 10.0 | 2019年9月 |