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月 |
