Android 開発にて、新規、既存のコンパルSDKの指定で迷います。
※ Android Studio では、「build.gradle」
- compileSdkVersion
- buildToolsVersion
- targetSdkVersion
- minSdkVersion
- maxSdkVersion
ここでは開発時に迷うバージョン指定の指針を解説します。
アプリのアップデート時には設定を見直して可能な限り最新版を指定することをオススメします。
ただし、変更後はコアな部分なので全体の確認テストも忘れなく実施しましょう。
また、ツールにバグが潜んでいることもありますので油断は禁物です。
compileSdkVersion
APK作成時、コンパイルで使用するSDKのバージョンになります。
・ベータ版ではない最新のバージョンを常に指定しましょう。
・最新のコンパイラは最新OSに最適化されてコンパイルされます。また、不具合等も修正されています。ただし、コンパイラの不具合に合うこともありますので変更時に動作確認はしましょう。
・このバージョンより上のAPIのメソッドは利用できません。最新の機能を利用する時は上げる必要があります。(「minSdkVersion」が低い場合はバージョンで処理を切り分ける必要があります。)
・こちらのバージョンを上げた場合、Gradleのバージョンを上げる必要が発生することもあります。これに伴う修正が発生することもあります。
buildToolsVersion
ビルド時に使うコンパイラのバージョン
・ビルド時のツールなので常に最新版をオススメします。
・省略すると自動で最新のバージョンが指定されます。
・「compileSdkVersion」を上げた場合はこちらのバージョンも上げる必要が発生する場合もあります。
・Android Studio 3 以降は記述しないと「compileSdkVersion」に合った最新バージョンが適用されます。ただし勝手にあがると少々不安なので指定することをオススメします。この環境で動作保証したい場合は特に指定することをオススメします。
targetSdkVersion
基本的に、新規アプリ開発の場合、特別な理由がない限り最新のバージョンを指定することをおすすめします。
こちらのバージョンを指定することでどのバージョンの仕様で動かすかを指定できます。
Android では指定したバージョンによって動作する仕様が変わります。
今まで多くのバージョンが発表されてきて、バージョンによってルールが異なっているのです。
例えば、権限周りなど仕様が変わります。
アプリの仕様によっては動作しなくなることもあります。
※ 例えばカメラが起動しなくなるなど
他には、振る舞い、権限、プッシュなどの動作も変わります。
また、UIの見た目が変わります。OSによって見た目、基本的なテーマが変わるためです。
(アクションバー、メニューキー、基本UI、テーマ、ステータスバー)
つまり、Android は指定したバージョンによって動きが異なりますので、どのバージョンの仕様で動かすかを指定するのです。
※ バージョンによる動作の違いに関してはここでは解説しません。
あえて低いバージョンを指定することで最新のOSのであっても昔と同じ振る舞いをさせることができます。
低いバージョンを指定する例としては、これからリリースするアプリだが昔のOSの動きをさせたい場合などになります。
「targetSdkVersion」より「minSdkVersion」が低い場合、「targetSdkVersion」以降で利用できるメソッドはバージョンで分岐のプログラミングが必要です。
Androidは日々進化しています。
新しいOSがリリース時に見た目や仕様が変わることがあります。
開発者は「新しい仕様で作成するか?」「古い仕様と見た目で開発するか?」をこのバージョンで指定できます。
つまり、古いバージョンを指定した場合、古い仕様と振る舞いが適用され、最新のOSでも古い仕様と振る舞いで動作させることができます。
※ Google Play の規約変更に伴い、新規は2018年8月、更新は2018年11月移行「26」以上でないと公開できなくなります。今から開発する場合は「26」以上で可能な限りの最新を指定しての開発をオススメします。また、既にリリース済みのアプリは早めに対応をオススメします。
※ 今後のことを考えると特別理由がない限り最新のバージョンを指定しましょう。Google Play の規約の変更で、毎年「targetSdkVersion」は1年以内にリリースされたバージョンでないと公開できなくすると明言しています。
minSdkVersion
インストールできる端末の最低のバージョン
・基本的に指定します。あまりにも古い端末の場合、端末の性能が悪くユーザビリティが低下します。可能な限りユーザーが納得する端末以降のバージョンを指定しましょう。
・新しいAPIが中心のアプリの場合古いOSでは動作しません。動作するOSのAPI以上を指定しましょう。
・Google Play Store にてこれ未満のバージョンの端末の場合、表示されません。
・API 25 でリリースされた機能が必須のアプリの場合は「25」を指定します。
※ あまり古い端末も含めてしまうと動作確認の時間や、プログラミングの工数が増えます。費用対効果を考え3年とか5年とかをプロジェクト内で検討し可能な限り古い端末にインストールできないようにすることも必要です。
maxSdkVersion
インストールできる端末の最高のバージョン
・省略した場合、maxSdkVersion で指定した以上の端末でインストールできなくなる。指定してGoogle Play へアップロードすると指定した以上のバージョンの端末から削除されるとのうわさも。
・基本的に新しいOSの端末は古いSDKでコンパイルされたAPKも問題なく動作します。
※ 特別な理由がない限り指定することはないでしょう。不必要な場合、記述を省略します。