Gradleのバージョンを7に上げたらdeprecatedになったwarningの解決方法
GradleおよびAGP(Android Gradle Plugin)のバージョンアップで非推奨になったwarningを解決する方法
はじめに
久しぶりにアプリのアップデートが必要になったため、1年以上放置していたソースコードを触るとともに、AndroidStudioもバージョンアップしていたため、Jellyfish | 2023.3.1にアップデートしました。
その際、Gradleのバージョンも 6.5 から 8.6 へアップデートしました。
gradle-wrapper.propertiesは以下のとおりです。
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip
問題点
app/build.gradleの方の記述で、以下のとおりいくつか非推奨(deprecated)になっている箇所がありました。
- compileSdkVersion
- buildToolsVersion
- flavorDimensions
これらの項目において、打ち消し線が引かれていることがわかります。
今回はGradleのバージョン6系から8系へのアップデートで発生しましたが、Gradeleバージョン7からdeprecatedになったようです。
それぞれ詳細の内容を見ると以下のとおりです。
'compileSdkVersion' is deprecated
'buildToolsVersion' is deprecated
'flavorDimensions' is deprecated
それぞれ合わせて修正します。
対処方法
「compileSdkVersion」→「compileSdk」に変更しましょう。
「buildToolsVersion xx」→「buildToolsVersion = 'xx'」に変更しましょう
「flavorDimensions "default"」→「flavorDimensions = ["default"]」に変更しましょう。
修正後は以下のとおりです。打ち消し線が消えて、warningがなくなっていることが確認できます。
ちなみに、deprecatedにはなっていませんが、minSdkVersionとtargetSdkVersionも、
compileSdkVersionと同様に「Version」の文字が省略できるようになっています。
「minSdkVersion」→「minSdk」に変更できます。
「targetSdkVersion」→「targetSdk」に変更できます。
<Before>
android {
compileSdkVersion 34
buildToolsVersion '34.0.0'
defaultConfig {
flavorDimensions "default"
targetSdkVersion 34
minSdkVersion 24
...
}
...
}
<After>
android {
compileSdk 34
buildToolsVersion = '34.0.0'
defaultConfig {
flavorDimensions = ["default"]
targetSdk 34
minSdk 24
...
}
...
}
付随した問題の対処方法
Flavor 'develop' has no flavor dimension.
Flavor 'production' has no flavor dimension.
この提案が出た場合は、以下のとおり、app/build.gradleのproductFlavorsの項目に、dimension "default"の記述を追加しましょう。
<Before>
productFlavors {
develop {
manifestPlaceholders = [appName: "@string/app_name_dev"]
}
production {
manifestPlaceholders = [appName: "@string/app_name"]
}
}
<After>
productFlavors {
develop {
dimension "default"
manifestPlaceholders = [appName: "@string/app_name_dev"]
}
production {
dimension "default"
manifestPlaceholders = [appName: "@string/app_name"]
}
}
これで、Project Structureのwarningも消えるでしょう。