なんとなく動けばとりあえずOKみたいな感じでいつも何とかしてしまうことが多いです
ですが、基本的なことですし、ちゃんと理解したいです。
バージョンを上げてトラブルにあったときも、どこを見ればいいのかなどがわかりやすいはず!
間違っているところや補足などがあったらコメントお願いします。
ぱっと並べるだけでこれぐらいありますね
-
モジュールのbuild.gradle(app/build.gradle)
- compileSdkVersion 22
- buildToolsVersion "19.1.0"
- minSdkVersion 14
targetSdkVersion 22
-
プロジェクトルートのbuild.gradle
- classpath 'com.android.tools.build:gradle:1.3.0'
-
gradle/wrapper/gradle-wrapper.propertiesのdistributionUrl
- distributionUrl=https://services.gradle.org/distributions/gradle-2.2.1-all.zip
compileSdkVersion
例:compileSdkVersion 22
コンパイル時に使うAndroid SDKのバージョンです。実際に実装として使われるのは端末内にある実装です。
そのバージョンにないメソッドを使おうとするとビルドできなかったりします。
例えば
compileSdkVersion 19
にして、Lollipop(API Level 21)のメソッドを使おうとすると以下のようにエラーが出てビルドできません
ちなみにcompileSdkVersionは、SDK ManagerでそのバージョンのSDK Platformがインストールされている必要があります
buildToolsVersion
例:buildToolsVersion "19.1.0"
aapt, dex, jarsignerなどのコンパイラのバージョンで、これが低いとmultidexなどの機能が利用できないなどがあるようです。(未検証)
ここのバージョンと対応するようです
minSdkVersion
例:minSdkVersion 14
このアプリをインストールできる最低のAPIレベルを指定します。
ここで14を指定していた場合、APIレベル10のAndorid 2.3の端末の場合Google Playからアプリをインストールして起動する事はできません。
maxSdkVersion
例:maxSdkVersion 22
minSdkの上限が決まっている版です。
端末にアプリがインストールしている状態で端末がOSアップデートすると自動でアンインストールされるみたいな話を聞きました(未検証)
targetSdkVersion
例:targetSdkVersion 22
一番ちゃんと動く対象の端末を指定するようです。
以下の様な動きになるようです。(テーマにはandroid:Themeを指定)
| targetSdk < 端末のAPIレベル | targetSdk > 端末のAPIレベル |
|---+---|
| targetSdkVersionバージョンのテーマを使う | 端末のAPIレベルのテーマを使う |
またメニューキーが表示されたりなどします。
Androidの内部のコードでif文などで利用しているだけのようです。
詳細はこちらで、、
targetSdkVersionでUIが切り替わる理由
targetSdkVersion 8に設定した4.4.4端末の動きです。古いUIになっていることがわかると思います。
Android Gradle Pluginのバージョン
例 /build.gradle
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0-beta4'
}
/app/build.gradle 以下の記述で適用しています。
apply plugin: 'com.android.application'
GradleというビルドシステムのAndroid用のプラグインとなっており、Gradleがこのプラグインを利用して、プラグインがbuildToolsやcompileSdkを利用してビルドを行うようになっているようです。
最近のバージョンだとDataBindingも含まれるようになったようです。
ProductFlavorsとかもこのプラグインの機能だと思います。
ここで指定するバージョンはここから選べるようです
https://jcenter.bintray.com/com/android/tools/build/gradle/
Gradleのバージョン
Gradleというビルドシステムにもバージョンがありそのバージョンの指定となります。
例 gradle/wrapper/gradle-wrapper.propertiesのdistributionUrl
distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip
終わりに
まだまだわかっていないことやバージョンが多いので、随時調べ更新していきたいです。
詳しい方や詳しいページなどがありましたら教えくてください。