Kotlin 1.5.0 不适用于 Dagger 2?

Ely*_*lye 6 android kotlin dagger-2

我有一个非常简单的 Dagger 代码,如下所示

class MainActivity : AppCompatActivity() {
    @Inject
    lateinit var info : Info
    init {
        DaggerMagicBox.create().poke(this)
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

class Info @Inject constructor() {
    val text = "Hello Dagger 2"
}

@Component
interface MagicBox {
    fun poke(mainClass: MainActivity)
}

Run Code Online (Sandbox Code Playgroud)

使用插件作为

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-kapt'
}
Run Code Online (Sandbox Code Playgroud)

和依赖关系如下

    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.core:core-ktx:1.3.2'
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.3.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    implementation 'com.google.dagger:dagger:2.33'
    kapt 'com.google.dagger:dagger-compiler:2.33'
Run Code Online (Sandbox Code Playgroud)

哪里kotlin_version1.4.32。它编译得很好。

但是,当我迁移到 时kotlin_version = "1.5.0",它只是错误说明

Execution failed for task ':app:kaptDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction
   > java.lang.reflect.InvocationTargetException (no error message)
Run Code Online (Sandbox Code Playgroud)

没有任何进一步的细节。

什么原因导致这个问题?以及如何解决?

laa*_*lto 7

您可以通过使用 .gradle 调用 gradle 来获取更多详细信息--stacktrace

这似乎是在 dagger 2.34 中修复的问题。最新版本是 2.35.1。