基本をおさえる!Androidアプリで指定するバージョンについて(compileSdk,buildToolsVersion,....)

  • 119
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

なんとなく動けばとりあえずOKみたいな感じでいつも何とかしてしまうことが多いです
ですが、基本的なことですし、ちゃんと理解したいです。
バージョンを上げてトラブルにあったときも、どこを見ればいいのかなどがわかりやすいはず!

間違っているところや補足などがあったらコメントお願いします。

ぱっと並べるだけでこれぐらいありますね

  • モジュールのbuild.gralde(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)のメソッドを使おうとすると以下のようにエラーが出てビルドできません
image

ちなみにcompileSdkVersionは、SDK ManagerでそのバージョンのSDK Platformがインストールされている必要があります
image

buildToolsVersion

例:buildToolsVersion "19.1.0"
aapt, dex, jarsignerなどのコンパイラのバージョンで、これが低いとmultidexなどの機能が利用できないなどがあるようです。(未検証)

image

ここのバージョンと対応するようです

image

https://developer.android.com/tools/revisions/build-tools.html

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になっていることがわかると思います。
image

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

終わりに

まだまだわかっていないことやバージョンが多いので、随時調べ更新していきたいです。
詳しい方や詳しいページなどがありましたら教えくてください。