对DaggerApplicationComponent的未解析引用

时间:2018-08-22 11:38:54

标签: android kotlin dagger-2 dagger kapt

我无法处理与Dagger及其组件有关的错误。

import android.app.Application
import dagger.Component

@Component(modules = arrayOf(ApplicationModule::class))
interface ApplicationComponent{
    fun inject(app: Application)
}

调用组件的地方看起来像这样

class MyAwesomeApplication : Application(){
    val component: ApplicationComponent by lazy {
        DaggerApplicationComponent.builder().appModule(ApplicationModule(this)).build()
    }

    override fun onCreate() {
        super.onCreate()
        component.inject(this)
    }
}

在gradle构建文件中,我已设置:

implementation "com.google.dagger:dagger:$dagger_version"
implementation "com.google.dagger:dagger-android:$dagger_version"
implementation "com.google.dagger:dagger-android-support:$dagger_version"
kapt "com.google.dagger:dagger-android-processor:$dagger_version"

还启动了存根生成并应用了kotlin-kapt

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

app.gradle

apply plugin: 'kotlin-kapt'

android {
kapt {
  generateStubs = true
}
}

// Dagger 2
implementation "com.google.dagger:dagger:$dagger2_version"
kapt "com.google.dagger:dagger-compiler:$dagger2_version"

构建->重建项目

答案 1 :(得分:0)

您的build.gradle应该看起来像这样

apply plugin: 'kotlin-kapt'
…
dependencies {
…
    final dagger_version = '2.17'
    implementation "com.google.dagger:dagger:$dagger_version"
    kapt "com.google.dagger:dagger-compiler:$dagger_version"
    compileOnly 'javax.annotation:javax.annotation-api:1.3.2'
}

我认为您缺少的是compileOnly 'javax.annotation:javax.annotation-api:1.3.2'。我有一个article for detailed steps to setup Dagger

答案 2 :(得分:0)

对我来说,这是一个gradle依赖问题。通过将以下内容添加到app.gradle脚本来解决该问题:

setEduState({  ...eduState, errors: props.errors }

然后我清理并重建了项目。

相关问题