Android Studio内で設定する、
minSdkVersionとtargetSdkVersionとmaxSdkVersiont。
そのほかに、compileSdkVersionもあります。
いつも違いがわからなくなるので、メモしておきたいと思いますー。
ちなみに、
minSdkVersionとtargetSdkVersionとmaxSdkVersionの
公式の詳しい情報はこちらです。
Android Developers<uses-sdk>(日本語)
targetSdkVersionは、こちらの一部コメントに書かれていました。
ビルドの設定 | Android Developers(日本語)
もくじ
minSdkVersionとは
・作成中のアプリについて、
どれだけ低いAPIレベルまで、動作保証対象とするかを設定。
・設定したAPIより低い端末の場合は、
アプリのインストールができなくなるようです。
・minSdkVersionは、必ず設定する。
(設定しなかった場合、「1」が設定されてしまい、
一番古いバージョンのAndroidでも
インストールできるようになってしまうようです)
targetSdkVersionとは
・アプリのターゲットとなるAPIレベルを指定。
・設定しなかった場合は、minSdkVersionの値が使われる。
何のために設定するのかわからずにいたのですが、とりあえず、
テストしている時の最新のAPIレベルを設定するのが良さそうでした。
なぜかというと…
例えば、APIレベル28でテストして、アプリをリリースしたとします。
(この時、targetSdkVersionに28を設定します)
その後、次のリリースまでしばらく時間が空いてしまい、APIレベル29がリリースされた時には、
システムが互換動作を有効にしてくれて、自動的に新しいAPIレベル(この場合、APIレベル29)でも、同じような画面の表示になるように変更してくれたりするようです。
この互換動作を行う際に、targetSdkVersionを使用するようでした。
Androidの各リリースに応じてアプリをメンテナンスしていくためには、targetSdkVersionを最新のAPIレベルに変更して、そのAPIレベルにあったテストを十分に行なっていく事が必要なようです。
maxSdkVersionとは(非推奨)
・作成中のアプリについて、
どれだけ高いAPIレベルまで、動作保証対象とするかを設定。
・古いAndroid(Android1.5、1.6、2.0、2.0.1)では、
設定したAPIレベルより高い端末の場合は、
アプリのインストールができなくなったり、
入れていたアプリが削除されてしまう可能性もあったようです。
・maxSdkVersionは、現在は設定しないことが推奨されています。
maxSdkVersionを設定しておくと、新しいAPIレベルが出た時に、
インストール済みのアプリが動かなくなってしまう可能性があります。
そのため、現在はこの値は基本的には使われていないようです。
※新しくプロジェクトを作った際には、初めから設定されていませんでした。
compileSdkVersionとは
・Gradleがアプリをコンパイルする際に使用するAPIレベルを設定。
・アプリは、このAPIレベル以下に含まれるAPI機能を使用できる。
compileSdkVersionには、コンパイルする時に使っているAPIレベルを設定するのが良さそうです。
コンパイルする時にこのAPIレベルを使うので、例えばすごく古いAPIレベルを設定すると、新しいAPIレベルでしか使えない機能は使えなかったりするようです。
minSdkVersion・targetSdkVersion・maxSdkVersion・compileSdkVersionの設定箇所
build.gradle (Module: app) で設定します。
build.gradleっていう名前のファイルって二つあるので、いつもどっちだったか迷います…笑
(今回設定するのは、build.gradle (Project: (プロジェクト名)) じゃない方です)