AndroidのAPIとAPIレベルとOSバージョンの関係性と最小APIレベルの考え方【Androidアプリ開発】

2023-08-09Androidアプリ開発入門

Android APIレベルとOS一覧対応表

今回はAndroidアプリのAPIとAPIレベルとOSバージョンの関係性について書いています。APIレベルはAndroidアプリを開発していく上で重要になるので是非一読して頂けたらと思います。

APIレベルとはAPIのリビジョンです。APIの機能追加・修正・変更があった場合にレベルが上がります。AndroidOSには色々なバージョンが有りますがOSバージョンによって対応するAPIが変わってきます。例えばAndroidのOSバージョンが12.0の端末の場合、APIレベル31と32に対応したアプリを使う事が出来ますが、APIレベル33と34に対応したアプリは使えないという事になります。それからAPIレベル(OS)毎にコードネームがついています。

プラットフォーム
バージョン
APIレベルコードネーム
Android 14.034UPSIDE_DOWN_CAKE
Android 13.033TIRAMISU
Android 12.032
31
S_V2
S
Android 11.030
Android 10.029Q
Android 928P
Android 8.127O_MR1
Android 8.026O
Android 7.1.1
Android 7.1
25N_MR1
Android 7.024N
Android 6.023M
Android 5.122LOLLIPOP_MR1
Android 5.021LOLLIPOP
Android 4.4W20KITKAT_WATCH
Android 4.419KITKAT
Android 4.318JELLY_BEAN_MR2
Android 4.2
Android 4.2.2
17JELLY_BEAN_MR1
Android 4.1
Android 4.1.1
16JELLY_BEAN
Android 4.0.3
Android 4.0.4
15ICE_CREAM_SANDWICH_MR1
Android 4.0
Android 4.0.1
Android 4.0.2
14ICE_CREAM_SANDWICH

Android 3.2
13HONEYCOMB_MR2
Android 3.1.x
12HONEYCOMB_MR1
Android 3.0.x11HONEYCOMB
Android 2.3.4
Android 2.3.3
10GINGERBREAD_MR1
Android 2.3.2
Android 2.3.1
Android 2.3
9GINGERBREAD
Android 2.2.x8FROYO
Android 2.1.x7ECLAIR_MR1
Android 2.0.16ECLAIR_0_1
Android 2.05ECLAIR
Android 1.64DONUT
Android 1.53CUPCAKE
Android 1.12BASE_1_1
Android 1.01BASE
引用:Androidデベロッパー APIレベルとは

APIの互換性

APIのリビジョンは以前のAPIに追加する形になるため基本的には上位互換があると言えます。例外として既存機能の代替え機能を追加した時やセキュリティの関係で廃止になった機能については使えません。一方、下位互換は基本的な考えに基づくとないと言えます。上位レベルに付加されている機能が提供されていないので使えません。しかし、AppCompactActivity(旧サポートライブラリ)を実装すると新しい機能も使えるようになります。

AndroidアプリのAPIレベル互換性の例

最小APIレベル(最小SDKバージョン)を意識する必要がある

マニフェストファイル(XML)と呼ばれるアプリの設定情報を記述するファイルがあるんですが、これに最小APIレベルを指定する必要があります。Android studioを使った場合プロジェクトの新規作成の時に出てくる[最小SDKバージョン]の項目になります。ここで設定した値未満の機種は対象外機種になりインストール出来ません。例えばAndroid 10(APIレベル29)の端末では、最小APIレベルを22以下に設定している場合にアプリの初回起動に警告が表示されます。

API29で追加された機能を使ったアプリの場合、最小APIは29となります。もし、この値を28にしていた場合に最新バージョンの端末(Android10)でアプリを使った場合は使えますが、API28(Android9)の端末の場合はクラッシュして予期しないエラーとかで落ちてしまいます。

Android 最小APIレベルの最新バージョンの機能を使用した場合の考え方

もう1つよくある例を挙げておきます。APIレベル10~28の機能を使ったアプリの場合、最小APIレベルは28になります。この時マニフェストファイルで値を29にした場合、本来使えるはずの28の機種がマニフェストファイルの縛りによりインストール出来なくなります。値を27にした場合、27もインストール可能ですが28の機能を使ってる為クラッシュしてしまいます。

Android 最小APIレベルの考え方

最小APIレベルはアプリで使われてるクラスの最大値であると言うことがわかってもらえたでしょうか。ただし、前章で少し触れたAppCompactActivityの機能を使って下位互換を行った場合はその対象となる機能のAPIレベルになります。上記は基本的な考えで実際は下位互換前提で作っていきます。

使われてるAPIレベルはAndroidデベロッパーのAPIリファレンスで対象のパッケージ(クラス)のページに必ず記載されています。また、Android studioでプロジェクト作成時に選択した最小APIレベル([最小SDKバージョン]の項目)は後から変更できます。

対象APIレベル要件を満たす必要がある

アプリを公開するときにGoogle Playの縛りで『対象APIレベルの要件』というのが有ります。マニフェストファイルに対象APIレベルというのが設定にあってここの値を要件と合致させる必要があります。つまり、要件にあるAPIレベルでアプリ使える様にしなくては行けません。対象APIレベルの『対象』はターゲットとする機種を指します。現在(2023年7月に書いてます)の要件は下記になります。

APIレベルの要件開始日
Android 13(APIレベル33)2023年8月31日:新規アプリで必要
2023年8月31日:アプリのアップデートに必要
Android 12(APIレベル31)2022年8月31日:新規アプリで必要
2022年 11月1日:アプリのアップデートに必要
引用:Play Consoleヘルプ

現在(2023年7月)だとAPIレベル31に対応していないとダメと言うことになります。新規アプリだと8月31日以降はAPIレベル33にしてないアプリはリリースできません。既にアプリをリリースしてる場合も同様に8月31日までには対応していないといけない、といった感じです。

最小APIレベル~対象APIレベルまでがダウンロード可能と言うことです。毎年8月31日に対象APIレベル要件の更新をしてるので要注意です。

ターゲットにするOSのバージョンを考える

作成するアプリのOSバージョンはどの範囲まで対応させたら良いのかって言う所なんですが、基本使いたい機能に合わせますが、Google Playの方でアプリがどのOSで使われているかの統計があるのでそちらも参考になると思います。統計はAndroid Studioのプロジェクト新規作成の画面の最小APIレベルを設定する箇所にリンクがあるのでそちらから見ることができます。

Android Platform API Version Distribution

マニフェストファイルのAPIレベルの設定

一応マニフェストファイルの属性も書いておきます。この辺りは別の記事で詳しく書こうと思ってます。

android:minSdkVersion必須項目。最小APIレベルを指定する
android:targetSdkVersion対象APIレベルを指定する。
この属性を指定していない場合はminSdkVersionの値が入る。