AndroidのAPIとAPIレベルとOSバージョンの関係性と最小APIレベルの考え方【Androidアプリ開発】
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.0 | 34 | UPSIDE_DOWN_CAKE |
Android 13.0 | 33 | TIRAMISU |
Android 12.0 | 32 31 | S_V2 S |
Android 11.0 | 30 | |
Android 10.0 | 29 | Q |
Android 9 | 28 | P |
Android 8.1 | 27 | O_MR1 |
Android 8.0 | 26 | O |
Android 7.1.1 Android 7.1 | 25 | N_MR1 |
Android 7.0 | 24 | N |
Android 6.0 | 23 | M |
Android 5.1 | 22 | LOLLIPOP_MR1 |
Android 5.0 | 21 | LOLLIPOP |
Android 4.4W | 20 | KITKAT_WATCH |
Android 4.4 | 19 | KITKAT |
Android 4.3 | 18 | JELLY_BEAN_MR2 |
Android 4.2 Android 4.2.2 | 17 | JELLY_BEAN_MR1 |
Android 4.1 Android 4.1.1 | 16 | JELLY_BEAN |
Android 4.0.3 Android 4.0.4 | 15 | ICE_CREAM_SANDWICH_MR1 |
Android 4.0 Android 4.0.1 Android 4.0.2 | 14 | ICE_CREAM_SANDWICH |
Android 3.2 | 13 | HONEYCOMB_MR2 |
Android 3.1.x | 12 | HONEYCOMB_MR1 |
Android 3.0.x | 11 | HONEYCOMB |
Android 2.3.4 Android 2.3.3 | 10 | GINGERBREAD_MR1 |
Android 2.3.2 Android 2.3.1 Android 2.3 | 9 | GINGERBREAD |
Android 2.2.x | 8 | FROYO |
Android 2.1.x | 7 | ECLAIR_MR1 |
Android 2.0.1 | 6 | ECLAIR_0_1 |
Android 2.0 | 5 | ECLAIR |
Android 1.6 | 4 | DONUT |
Android 1.5 | 3 | CUPCAKE |
Android 1.1 | 2 | BASE_1_1 |
Android 1.0 | 1 | BASE |
APIの互換性
APIのリビジョンは以前のAPIに追加する形になるため基本的には上位互換があると言えます。例外として既存機能の代替え機能を追加した時やセキュリティの関係で廃止になった機能については使えません。一方、下位互換は基本的な考えに基づくとないと言えます。上位レベルに付加されている機能が提供されていないので使えません。しかし、AppCompactActivity(旧サポートライブラリ)を実装すると新しい機能も使えるようになります。

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

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

最小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日:アプリのアップデートに必要 |
現在(2023年7月)だとAPIレベル31に対応していないとダメと言うことになります。新規アプリだと8月31日以降はAPIレベル33にしてないアプリはリリースできません。既にアプリをリリースしてる場合も同様に8月31日までには対応していないといけない、といった感じです。
最小APIレベル~対象APIレベルまでがダウンロード可能と言うことです。毎年8月31日に対象APIレベル要件の更新をしてるので要注意です。
ターゲットにするOSのバージョンを考える
作成するアプリのOSバージョンはどの範囲まで対応させたら良いのかって言う所なんですが、基本使いたい機能に合わせますが、Google Playの方でアプリがどのOSで使われているかの統計があるのでそちらも参考になると思います。統計はAndroid Studioのプロジェクト新規作成の画面の最小APIレベルを設定する箇所にリンクがあるのでそちらから見ることができます。

マニフェストファイルのAPIレベルの設定
一応マニフェストファイルの属性も書いておきます。この辺りは別の記事で詳しく書こうと思ってます。
android:minSdkVersion | 必須項目。最小APIレベルを指定する |
android:targetSdkVersion | 対象APIレベルを指定する。 この属性を指定していない場合はminSdkVersionの値が入る。 |
ディスカッション
コメント一覧
まだ、コメントがありません