【Unity】AndroidのAPIレベルとOS、SDKとの関係を整理してみる
Androidアプリを作るときに名前の挙がる「APIレベル」さん。レベルが高いほどいい感じがしますが、これは一体なんなの? という方向けに簡単に整理してみます。
関連するワードはOSとAndroid SDKです。
UnityでAndroid向けにビルドする時にも関連するので、色々と調べていくとっかかりになるような情報をお伝えできればと思います。
AndroidのAPIレベルとOS、SDKとの関係
APIレベルについてAndroidの『Developers』のサイトから定義を引用します。
API レベルは、Android プラットフォームのバージョンごとに提供されるフレームワーク API のリビジョンを一意に識別する整数値です。
定義でもカタカナなどが並んでいるのでざっくりと説明を。
Androidプラットフォームのバージョンとは、平たく言えばOSのバージョンのこと。フレームワークとは、アプリケーションを動かすための機能がまとまっているもののこと。
APIはApplication Programming Interfaceの略で、すごくざっくりいうと別のアプリケーションから呼び出せる機能やメソッドなどのこと。例えば、Androidアプリを動かすためのベースとなる部分があって、アプリ側からその中にあるメソッドを呼び出せるイメージです。これにより、ユーザ側が全部実装するのではなく、必要な部分を呼び出すことで自分のソフトウェアにより集中できるようになります。
リビジョンはバージョンと同じような意味合いで使われることが多い言葉ですが、改訂のニュアンスが含まれています。修正してセキュリティを高めていたりするので、APIレベルとして区切ってなるべく新しい方を使うのが望ましいんです。
AndroidのOSがバージョンアップするたびにAPIレベルが上がっていきます。各OSバージョンでターゲットとするAPIレベルは1つですが、それまでにリリースされたAPIレベルの機能も使うことができます。
このあたりの話はAndroidの『Developers』のサイトにもあるので、こちらもご参照ください。
OSバージョンとの関係
上で『各OSバージョンでターゲットとするAPIレベルは1つ』と書きましたが、各OSバージョンで自分のAPIレベルはこれです、という形で情報を持っています。
例えば以下の表のようにOSバージョンとAPIレベルが対応しています。Unity2020.1だとAndroid4.4(APIレベル19)以上向けになるのでそこからまとめています。
OSバージョン | APIレベル |
Android 11.0 | 30 |
Android 10.0 | 29 |
Android 9.0 | 28 |
Android 8.1 | 27 |
Android 8.0 | 26 |
Android 7.1 | 25 |
Android 7.0 | 24 |
Android 6.0 | 23 |
Android 5.1 | 22 |
Android 5.0 | 21 |
Android 4.4W | 20 |
Android 4.4 | 19 |
新しいOSがリリースされるたびにAPIレベルも上がっていきます。6.0から7.0のようにメジャーバージョンが上がる時だけではなく7.0から7.1のようにマイナーバージョンが上がる時にもAPIレベルが上がります。
Android SDKとの関係
APIレベルとAndroid SDKのバージョンは対応していて、例えばAPIレベル28のSDKだとバージョン名に28.xとついています。
SDKはソフトウェアの開発キットで、プログラムで使うライブラリの他に、デバッガなどの便利ツールも入っています。APIのレベルというとライブラリ内のパッケージやクラスをイメージしやすくなるかもしれません。
こうしたバージョンをAPIレベルという形で区別することでどのSDKを使えばいいか分かるようになっています。
Androidアプリをリリースする際は「minSdkVersion」と「targetSdkVersion」を指定する必要があります。「minSdkVersion」はこのアプリを実行できる最小のAPIレベルを指定できます。デフォルトだとAPIレベル1ですが、指定できるからといってそのOSの端末でアプリが動くかどうかは別の話です。「どの端末でも動くようにすればたくさんの人に遊んでもらえる!」と思うかもしれませんが、APIレベルを広げた分だけ自分でサポートしなければならない範囲も広がるので、個人でやるならあまり広げすぎない方が良いと思います。
先ほど触れたバージョンが異なる端末の性能差は考えなければいけなくて、新しい端末でスムーズに動いているからといって古い端末でも同じように動くとは限りません。逆に古い端末で動くように調整すると新しい端末の良さを引き出せないことにもなりかねません。
「targetSdkVersion」はターゲットとするAPIレベルを指定します。基本的には可能な限り最新のAPIレベルを指定することになります。Unityの場合はインストールされたSDKのうち最新バージョンをターゲットするという選択肢もあります。
Google Playでは新しいアプリをリリースする際は2020年12月現在でAPIレベル29以上を指定する必要があります。年々この要件は上がっていて、2021年8月以降は新しいアプリではAPIレベル30以上を指定しないといけません。公開済みのアプリをアップデートする場合は3ヶ月くらい猶予があります。
また、Android SDKについてざっくりと意味を知りたい時は以下のページもご参照ください。
まとめ
このページではAndroidアプリをリリースする際に見かける「APIレベル」について簡単に整理しました。Android SDKとも関わってくる部分なのでそれぞれ定義を調べてみると繋がりが見えてくるかもしれません。
UnityでもPlayer Settingsの中にこの設定があるので確認しておくと良いでしょう。
ゲーム開発の攻略チャートを作りました!
-
前の記事
正常系テストと異常系テスト、大変なのはどっち?【ゲーム開発】 2020.12.23
-
次の記事
休日完全フリーより予定を決めた方が使える時間が多い説【ゲーム開発】 2020.12.25
コメントを書く