モジュールレベル(appレベル)のビルドの設定ファイル(build.gradle)には、様々なバージョン(version)と名のつくものが登場しますが、その違いが一体何やねんということを解説しています。
android { compileSdkVersion 27 ← こういうの buildToolsVersion '27.0.3' ← こういうの defaultConfig { applicationId "net.minpro.straightmachine" minSdkVersion 15 ← こういうの targetSdkVersion 27 ← こういうの versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" }
「compileSdkVersion」と「buildToolsVersion」
ビルドは、上のような2つのステップになっていて
- ソースコードやアプリで使うリソース(画像・音・データなど)を、コンピューターが読める言葉(バイトコード)に翻訳して、【コンパイルする】
- それをアプリに仕立て上げる【ビルドする】
という感じになっていますが、
この
- 1のプロセスで使うAPIレベルのバージョンが「compileSdkVersion」で、
- 2のプロセスで使うAPIレベルのバージョンが「buildToolsVersion」
のようです。
「buildToolsVersion」は、build.gradleに必ずしも記述しておく必要はないらしく、その場合はAndroid Studioくんが、自動的にバージョンを設定してくれるようです。
If you’re using Android plugin for Gradle 3.0.0 or higher, your project automatically uses a default version of the build tools that the plugin specifies.
また、「compileSdkVersion」の数字は「targetSdkVersion」より低いとエラーになるようです。
「minSdkVersion」と「targetSdkVersion」
「minSdkVersion」は、プロジェクト作成時に設定した、アプリがインストールできる端末の最低のAPIレベル(Androidのバージョン)のことです。
「targetSdkVersion」は、公式の説明では
Specifies the API level used to test the app.
と書いてあり、アプリをテストするときに設定するAPIレベル(Androidのバージョン)ということのようです。
テストするときに使うバージョンということですから、「ターゲット」ということなのかもしれませんが、少なくともここでは、
「compileSdkVersion」の数字は「targetSdkVersion」より低いとエラーになる
ということを知っておけば、よさそうです。
(詳しくは下の動画で解説していますので、よろしければご覧ください)