【发布时间】:2021-05-06 09:57:38
【问题描述】:
我有一个非常简单的 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)
}
用插件作为
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-kapt'
}
以及以下依赖项
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'
其中kotlin_version 是1.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)
没有任何进一步的细节。
是什么导致了这个问题?以及如何解决?
【问题讨论】:
-
这是github中的问题:github.com/google/dagger/issues/2511