Android Kotlin:错误未解决参考:DaggerAppComponent

Posted

技术标签:

【中文标题】Android Kotlin:错误未解决参考:DaggerAppComponent【英文标题】:Android Kotlin : Error Unresolved reference: DaggerAppComponent 【发布时间】:2017-08-08 05:06:27 【问题描述】:

我今天已经使用 Dagger 2 将 Kotlin 插件安装到现有项目中。在安装 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

项目等级:

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"

模块分级:

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 文件是自动生成的,所以我很困惑为什么会抛出未解析的引用错误。

【问题讨论】:

你解决了你的问题?出了什么问题? 打开Gradle Console然后点击Run with --stacktrace 显示更多日志(关于错误的更多细节) 【参考方案1】:
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"

【讨论】:

为我工作,谢谢【参考方案2】:

我收到了同样的错误信息,但我的情况与你的不同。未解析的引用仅在生成签名 APK 时出现。我就是这样解决的:

app/build.gradle

kapt 
    generateStubs = true


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

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

【讨论】:

“kotlin-kapt”插件不使用“kapt.generateStubs”【参考方案3】:

一开始rebuild后报错:

未解决的参考:DaggerAppComponent

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

【讨论】:

不要对此投反对票;完成其他步骤后,这就是我所缺少的,哈哈。【参考方案4】:

就我而言,截至

Kotlin version 1.5.30
Dagger version 2.35.1
Dagger support version 2.28.3

dagger 2(以上版本)和 kotlin 1.5.30 存在问题。当您尝试使用

运行项目时
implementation 'com.google.dagger:dagger:2.35.1'
implementation 'com.google.dagger:dagger-android:2.35.1'
implementation 'com.google.dagger:dagger-android-support:2.28.3'
kapt 'com.google.dagger:dagger-compiler:2.28.3'
kapt 'com.google.dagger:dagger-android-processor:2.28.3'

它将失败并出现错误:

java.lang.reflect.InvocationTargetException

当我使用Run with --stacktrace 时,我发现问题是:

IllegalStateException:不支持的元数据版本”在 KaptWithoutKotlincTask 与 1.5.0-M2

我发现这是因为 Dagger 使用了旧版本的 kotlinx-metadata-jvm 库并且还不支持 kotlin 1.5 及更高版本。

因此,我补充说:

kapt 'org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.2.0'

我不知道是否有官方解决此问题的方法,但这可能会对某人有所帮助。

N:B:我尝试从 kapt 更改为 annotationProcessor,并认为项目已编译,我仍然无法生成 DaggerAppComponent

【讨论】:

【参考方案5】:

不要在 Kotlin 中使用 private 来注入匕首,像这样在 Kotlin 中使用它

@Inject
     internal lateinit

【讨论】:

以上是关于Android Kotlin:错误未解决参考:DaggerAppComponent的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin-android:未解决的参考数据绑定

未解决的参考匕首 2 + kotlin + android gradle

Android Studio 3.1.3 - 未解决的参考:R - Kotlin

未解决的参考:viewModelScope - Kotlin Android

未解决的参考:android MediaPlayer (kotlin) 中的上下文

Kotlin Foo::class.java“未解决的参考:Java”错误