Android Studio 安卓Kotlin:错误未解析的引用:DaggerApp组件

uajslkp6  于 2022-11-16  发布在  Android
关注(0)|答案(7)|浏览(211)

我今天已经安装了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

项目等级:

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

62o28rlo

62o28rlo1#

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"
rwqw0loc

rwqw0loc2#

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

应用程序/构建版本.gradle

kapt {
    generateStubs = true
}

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

我现在可以部署我的签名APK而不会出错

5q4ezhmt

5q4ezhmt3#

首先,它在重建后给出错误:
未解析的引用:DaggerApp组件
您应该尝试导入(Alt + Enter)该组件。

rlcwz9us

rlcwz9us4#

在我这边,截至

Kotlin version 1.5.30
Dagger version 2.35.1
Dagger support version 2.28.3

dagger 2(以上版本)和Kotlin1.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'

它将失败,并显示错误:
调用目标异常
当我使用Run with --stacktrace时,我发现问题是:
非法状态异常: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

laximzn5

laximzn55#

我花了很多时间来解决这个问题。在我的例子中应用了不正确的导入:

import com.google.android.datatransport.runtime.dagger.Module
import com.google.android.datatransport.runtime.dagger.Provides

我需要:

import dagger.Module
import dagger.Provides

付款注意事项

bwntbbo3

bwntbbo36#

对我来说,这是显示未解析的引用“DaggerAppComponent”。在花了这么多时间后,我想,这通常是由于Android Studio无法自动生成DaggerAppComponent而发生的。
因此,我们需要清理并重建项目,然后导入(ALT+Enter)
如果它仍然不工作,尝试File=〉Invalidate Caches/restart。
也许有一天这会对某人有所帮助!

z4bn682m

z4bn682m7#

不要用私人的匕首在Kotlin身上注射,像这样给Kotlin使用

@Inject
     internal lateinit

相关问题