Android Kotlin:Error Unresolved参考:DaggerAppComponent

时间:2017-03-16 20:17:13

标签: android android-studio kotlin dagger-2

我今天已经将Kotlin插件安装到Dagger 2的现有项目中。在安装Kotlin之前,我对Dagger没有任何问题。但是,现在编译器抱怨:

Error:(5, 32) Unresolved reference: DaggerAppComponent
Error:Execution failed for task ':app:compileDebugKotlinAfterJava'.
> Compilation error. See log for more details
Error:(12, 21) Unresolved reference: DaggerAppComponent

Project gradle:

ext.kotlin_version = '1.1.1'

    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"

模块gradle:

kapt {
    generateStubs = true
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.0.1'
    testCompile 'junit:junit:4.12'

    compile 'com.google.dagger:dagger:2.7'
    kapt 'com.google.dagger:dagger-compiler:2.7'

    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"


}

DaggerAppComponent文件是自动生成的,所以我很困惑为什么会抛出未解析的引用错误。

5 个答案:

答案 0 :(得分:46)

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'   

在您的依赖项中:

implementation "com.google.dagger:dagger:2.x"
implementation "com.google.dagger:dagger-android:2.x"
implementation "com.google.dagger:dagger-android-support:2.x"
kapt "com.google.dagger:dagger-compiler:2.x"
kapt "com.google.dagger:dagger-android-processor:2.x"

答案 1 :(得分:15)

我遇到了同样的问题,但我的情况与你的不同。未解决的引用仅在生成签名APK时出现。这就是我解决它的方法:

应用/的build.gradle

kapt {
    generateStubs = true
}

dependencies {
    //...
    implementation 'com.google.dagger:dagger:2.9'
    kapt 'com.google.dagger:dagger-compiler:2.9'
}

我现在可以无错误地部署我签名的APK

答案 2 :(得分:0)

这个项目帮助我走上正轨: https://github.com/damianpetla/kotlin-dagger-example

答案 3 :(得分:0)

首先,它在重建后给出错误:

  

未解决的参考:DaggerAppComponent

您应该尝试导入(Alt + Enter)该组件。

答案 4 :(得分:-2)

不要在Kotlin中使用private注入匕首,像这样将其用于Kotlin

@Inject
     internal lateinit