AndroidGradlePlugin8.0アップデートで対応した項目のメモです。下記の内容が全てではありません。各プロジェクト毎に異なるのでその都度調べる必要があります。

  • com.android.tools.build:gradleのバージョンを8.0.0に変更する(buildSrcを使っているプロジェクトは適切に変更する)
com.android.tools.build:gradle:8.0.0
  • ルートのbuild.gradle.kts内に下記を追加する(buildSrcを使っているプロジェクトは適切に変更する)
buildscript { dependencies { classpath(“com.android.tools.build:gradle-api:8.0.0” } }
  • AndroidManifest.xmlで<manifest package=“<packagename>”>を指定している場合、同じモジュールの build.gradle.ktsにnamespace = “<packagename>”として移動する
  • 各モジュールのbuild.gradle.ktsでandroid { buildFeatures.buildConfig = true }を追加
  • build.gradle.ktsでandroid { compileOptions.sourceCompatibility(JavaVersion.VERSION_17) }に変更
  • build.gradle.ktsでandriod { compileOptions.targetCompatibility(JavaVersion.VERSION_17) } に変更
  • build.gradle.ktsでandroid { kotlinOptions.jvmTarget = “17” } に変更
  • Java17に対応していないライブラリのバージョンアップ
  • okhttp3を使っているモジュールのproguard.proに下記を追加
-dontwarn okhttp3.internal.platform.**
-dontwarn org.conscrypt.**
-dontwarn org.bouncycastle.**
-dontwarn org.openjsse.**

https://qiita.com/Nabe1216/items/05c9981fd12eb2fa1df0

  • モジュール外のR(Resources)をコード内から呼び出す場合はパッケージ名が必要になりました。例えばマテリアルデザインライブラリを使っている場合は下記になります
R.string.abc_action_bar_up_description // 変更前
com.google.android.material.R.string.abc_action_bar_up_description // 変更後

import com.google.android.material.R as materialR // 別名を付けて
materialR.string.abc_action_bar_up_description // このようにしても良い
  • CIなどでJavaのバージョンが17未満の場合は17に設定する

BitriseではSet Java versionというレシピがあるので17に設定すれば良い

  • gradle.propertiesでandroid.enableR8.fullMode=trueを追加する
  • 動作確認してみてJsonのシリアライズ/デシリアライズがエラーになる場合は@Json(name=“name”)から@field:Json(name=“name”)に変更する
  • gradle-wrapper.propertiesのdistributionUrlをdistributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zipに変更する

下記は対応必須ではないがdeprecatedになっているので対応

  • Action<ApplicationVariant>がdeprecatedになったので
applicationVariants.all(object : Action<ApplicationVariant> {
    override fun execute(variant: ApplicationVariant) {
        variant.resValue("string", "version_name", variant.versionName)
    }
})

を下記に変更

applicationVariants.forEach { variant ->
    variant.resValue("string", "version_name", variant.versionName)
}