Kotlin 1.5.20でHiltを使う際に必要なこと(2021.06.28時点)
現時点だとなんか色々バグっててめんどい
Created at

488 Words
⚠️

先日リリースされた Kotlin 1.5.20 だが、既存のプロジェクトに何も考えず突っ込んだらビルドでズッコケたので対処方法のメモ。

2021年6月28日時点の内容なので、いまに要らない情報になるんじゃないかと思います。


Android Gradle PluginとHiltのバージョン

com.android.tools.build:gradle:7.1.0-alpha02com.google.dagger:hilt-android-gradle-plugin:2.37を使用する。com.android.tools.build:gradle:7.0.0-beta04でやろうとするとjava.lang.NoSuchMethodErrorで失敗する。

Gradle crashes with: Hilt + AGP 4.2.0-beta04 · Issue #2337 · google/dagger

buildscript {
    ext.kotlin_version = "1.5.20"
    repositories {
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:7.1.0-alpha02'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
        ...
        classpath 'com.google.dagger:hilt-android-gradle-plugin:2.37'
    }
}

build.gradle(:app)の追記

Support for Kotlin 1.5.20 · Issue #2684 · google/dagger によると、Hilt Gradle Pluginによって本来自動的に設定されるはずのオプションがKotlin 1.5.20のバグによって設定されないため、手動で記述しておく必要があるらしい。

android {
    ...
    kapt {
        javacOptions {
            // These options are normally set automatically via the Hilt Gradle plugin, but we
            // set them manually to workaround a bug in the Kotlin 1.5.20
            option("-Adagger.fastInit=ENABLED")
            option("-Adagger.hilt.android.internal.disableAndroidSuperclassValidation=true")
        }
    }
}

See Also