【问题标题】:Unresolved reference to DaggerApplicationComponent未解决对 DaggerApplicationComponent 的引用
【发布时间】:2018-08-22 11:38:54
【问题描述】:

我无法处理与 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 已被应用

有什么想法吗?

【问题讨论】:

  • 一段时间后看起来问题出在 kapt 依赖项上,我一直在使用“dagger-android-processor”,而我应该使用 dagger-compiller。
  • 你也可以发布你的 build.gradle 文件吗?
  • 除了标准的东西之外,没有其他依赖项和 kotlin-kapt 存根生成,正如我所提到的,缺少的是 dagger-compiller 依赖项。
  • @Robert 感谢您发布您的答案!而不是 cmets,请考虑 adding it below as a "self-answer" 并将其标记为接受 - 它可以帮助潜在的回答者知道您已经解决了您的问题,并让您在将来其他人偶然发现类似问题时获得信任。干杯!

标签: android kotlin dagger-2 dagger kapt


【解决方案1】:

你的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】:

    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"
    

    构建 -> 重建项目

    【讨论】:

      【解决方案3】:

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

      apply plugin: 'kotlin-kapt'
      .
      .
      dependencies {
          .
          .
          kapt "com.google.dagger:dagger-compiler:$dagger2_version"
          kapt "com.google.dagger:dagger-android-processor:$dagger2_version"
      }
      

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

      【讨论】:

        【解决方案4】:
        For me its because of dagger version. By using the below version resolved the issue for me.
        
        plugins {
            id 'com.android.application'
            id 'kotlin-android'
            id 'kotlin-kapt'
        }
        
        dagger_version = '2.17'
            implementation "com.google.dagger:dagger:$dagger_version"
            kapt "com.google.dagger:dagger-compiler:$dagger_version"
        

        【讨论】:

          猜你喜欢
          • 2016-12-14
          • 2021-10-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-25
          • 2021-01-22
          相关资源
          最近更新 更多