Android 10 Qが2019年秋にはリリースされるのでしょうか。それにしてもAndroidはOSのバージョンがたくさんあります。それに応じてAPIが新しく作成されたり、推奨になるAPIも出てきます。
アプリを開発する側からすると、APIレベルでの細かな調整や切り分けが必要になってしまいますね~。
Platform と API Level
Google:OS別のシェア
これによるとまだまだ古い機種もあるのですね。対応するのが大変です、ただ世界のシェアなので日本はどうかはまた別の話かもしれません。
API Level | Platform | Release | Code Name |
1 | Android 1.0 | 2008/9 | BASE |
2 | Android 1.1 | 2009/2 | BASE_1_1 |
3 | Android 1.5 | 2009/4 | CUPCAKE |
4 | Android 1.6 | 2009/9 | DONUT |
5 | Android 2.0 | 2009/10 | ECLAIR |
6 | Android 2.0.1 | 2009/12 | ECLAIR_0_1 |
7 | Android 2.1.x | 2010/1 | ECLAIR_MR1 |
8 | Android 2.2.x | 2010/6~2011/11 | FROYO |
9 | Android 2.3~2.3.2 | 2010/11~2011/1 | GINGERBREAD |
10 | Android 2.3.3~2.3.7 | 2011/2~2011/9 | GINGERBREAD_MR1 |
11 | Android 3.0 | 2011/2 | HONEYCOMB |
12 | Android 3.1 | 2011/5 | HONEYCOMB_MR1 |
13 | Android 3.2.x | 2011/7 | HONEYCOMB_MR2 |
14 | Android 4.0~4.0.2 | 2011/10 | ICE_CREAM_SANDWICH |
15 | Android 4.0.3 | 2011/12 | ICE_CREAM_SANDWICH_MR1 |
16 | Android 4.1.x | 2012/7 | JELLY_BEAN |
17 | Android 4.2.x | 2012/12 | JELLY_BEAN_MR1 |
18 | Android 4.3.x | 2013/7 | JELLY_BEAN_MR2 |
19 | Android 4.4.x | 2013/9~2014/6 | KITKAT |
20 | Android 4.4W.x | 2014/6 | [Android Wear] |
21 | Android 5.0.x | 2014/10 | Lollipop |
22 | Android 5.1.x | 2015/3 | Lollipop_MR1 |
23 | Android 6.0.x | 2015/10 | Marshmallow |
24 | Android 7.0 | 2016/8 | Nougat |
25 | Android 7.1.x | 2016/10~2017/4 | Nougat |
26 | Android 8.0 | 2017/8 | Oreo |
27 | Android 8.1 | 2017/12 | Oreo and Go Edition |
28 | Android 9.0 | 2018/8 | Pie |
29 | Android 10 | Q (2019 Q3 release?) |
2019/5/7 までの7日間でのシェア
Pie | 10.4% |
Oreo | 28.3% |
Nougat | 19.2% |
Marshmallow | 16.9% |
Lollipop | 14.5% |
Others | 10.7% |
1週間でのサンプリングです。
2018/09/12でのシェア
Pie | 0% |
Oreo | 14.6% |
Nougat | 30.8% |
Marshmallow | 22.7% |
Lollipop | 19.2% |
Others | 12.7% |
Pieは出始めなので未だ0%です。
バージョンごとの切り分けや機能テストを考えるとなるべく対応レベルの数は少なめにしたいところですが、Lollipop以上で87.3%です。
Marshmallow以上では68.1%でほぼ2/3
実際にリリースする時期にはこの割合も変わるでしょうけれど
新しいOSの「Android 10 Q ベータ版」の検証には
GoogleのPixelシリーズが必須ですよ(課長よろしく!)
バージョン切り分け
非推奨APIがたくさんあるので、APIのレベルに応じて処理を切り分けないといけないのですが、
例えばLillipop以降とそれ以外で切り分ける場合
1 2 3 4 5 |
if(Build.VERSION.SDK_INT >= 21){ // ... }else{ // ... } |
こんな感じでいきましょうか。
References:
Build.VERSION_CODES | Android Developers
ダッシュボード | Android Developers
Android OS Version History