当前位置: 首页 > 知识库问答 >
问题:

Dagger 2不生成代码。未解析的引用:DaggerAppComponent

蔚和安
2023-03-14

一周以来,我一直在尝试在项目中生成代码。问题是,在我添加了AppComponent,模块,依赖项和插件后,它不起作用。我收到编译错误。然后我在新的空项目中重复了所有这些,它工作正常。我的Android Gradle 插件版本:7.1.0 Gradle 版本:7.3

我的AppComponent

@Component(模块=[AppModule::class])接口AppComponent{有趣的main Repository(): MainRepository}

应用模块

@Module对象 AppModule {

@Provides
fun provideMainRepository(): MainRepository {
    return MainRepository()
}

}

格雷德档案

plugins {
id 'com.android.application'
id 'kotlin-android'
id 'com.google.gms.google-services'
id 'kotlin-kapt'
id 'com.google.firebase.crashlytics'
id 'kotlin-parcelize'

}

Android { compileSdkVersion 31 buildToolsVersion " 30 . 0 . 3 "

defaultConfig {
    applicationId "com.flametech.vaytoday"
    minSdkVersion 22
    targetSdkVersion 30
    versionCode 58
    versionName "2.19"
    multiDexEnabled = true
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

buildFeatures {
    viewBinding = true
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}
compileOptions {
    sourceCompatibility JavaVersion.VERSION_11
    targetCompatibility JavaVersion.VERSION_11
}
kotlinOptions {
    jvmTarget = '11'
}

}

依赖项{

implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
implementation 'com.google.firebase:firebase-database:20.0.0'
implementation 'androidx.room:room-runtime:2.3.0'
implementation 'com.google.firebase:firebase-storage-ktx:20.0.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.databinding:databinding-runtime:4.1.3'
implementation 'androidx.lifecycle:lifecycle-common-java8:2.3.1'
implementation 'androidx.fragment:fragment-ktx:1.3.6'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
implementation platform('com.google.firebase:firebase-bom:26.0.0')
implementation 'com.google.firebase:firebase-analytics-ktx'
implementation 'com.google.firebase:firebase-messaging'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
...

implementation "com.google.dagger:dagger:2.40.5"
kapt "com.google.dagger:dagger-compiler:2.40.5"

}

错误

 Unresolved reference: DaggerAppComponent

失败:构建失败,但有一个异常。

    < li >哪里出错:任务执行失败':app:compileDebugKotlin '。

编译错误。有关更多详细信息,请参阅日志

Stactrace

> Configure project :app

警告:选项设置'android.overridePathCheck=true'是实验性的。当前默认值为'false'。

任务 :app:kaptDebugKotlin app/build/tmp/kapt3/stubs/debug/com/flametech/vaytoday/domain/database/AppDatabase.java:7: 警告:架构导出目录未提供给注释处理器,因此我们无法导出架构。可以提供 room.schemaLocation 注释处理器参数,也可以将 exportSchema 设置为 false。公共抽象类 AppDatabase 扩展 androidx.room.RoomDatabase { ^

任务:app:compileDebugKotlin FAILED e:app/src/main/java/MainActivity.kt:(51,42):未解析的引用:DaggerAppComponent

失败:构建失败,但有一个异常。

    < li >哪里出错:任务执行失败':app:compileDebugKotlin '。

编译错误。有关更多详细信息,请参阅日志

  • 尝试:

使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获得更多日志输出。运行--scan以获得完整的见解。

  • 在 https://help.gradle.org 获取更多帮助

此版本中使用了已弃用的Gradle功能,使其与Gradle 8.0不兼容。

您可以使用'- warning-mode all '来显示单个的不推荐使用警告,并确定它们是否来自您自己的脚本或插件。

见https://docs.gradle.org/7.3/userguide/command_line_interface.html#sec:command_line_warnings

建筑在18年代失败

在 MainActivity 中创建 AppComponent

   override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    val appComponent: AppComponent = DaggerAppComponent.create()}

解决方案!!!问题解决了。我检查了我的依赖项,了解到我的AppComponent和模块中有import,如下所示< code > import com . Google . Android . data transport . runtime . dagger . component

但正确的导入是导入dagger.Component

共有1个答案

强德厚
2023-03-14

问题解决了。我检查了我的依赖项,了解到我在AppComponent和模块中有导入,如下所示

import com.google.android.datatransport.runtime.dagger.Component 

但正确的进口是<代码>进口匕首。组件

 类似资料:
  • 我已经阅读了JavaParser手册,并开始构建自己的示例。我想要实现的是阅读Java代码并在其上插入新的代码行。具体来说,我想在每个和语句之前初始化一个计数器,并在语句体内部对计数器进行递增。我这样做的目的是为一组指定的运行运行运行新代码,并观察每个分支执行了多少次。我使用JavaParser来解析和添加代码,因为我想自动生成和运行所有东西。 例如,我们有以下简单的代码: 在解析之后,我想有如下

  • 问题内容: 我需要以下工具: 方便地解析Java源代码并轻松访问给定的元素。 轻松生成源代码文件,轻松将数据结构转换为代码 有什么好的技巧,库,框架,工具吗?谢谢你的帮助。 问题答案: 从Java 6开始,编译器在JDK中包含一个API。通过它,您可以通过API 访问Java解析器的结果。JDK5以Mirror API 的形式提供了相同的功能。有一个很好的介绍性文章在这里。 我见过的最好的代码生成

  • 本文向大家介绍java 二维码的生成与解析示例代码,包括了java 二维码的生成与解析示例代码的使用技巧和注意事项,需要的朋友参考一下 二维码,是一种采用黑白相间的平面几何图形通过相应的编码算法来记录文字、图片、网址等信息的条码图片。如下图 二维码的特点: 1.  高密度编码,信息容量大 可容纳多达1850个大写字母或2710个数字或1108个字节,或500多个汉字,比普通条码信息容量约高几十倍。

  • Logstash 中 Event 的生成 上一节大家可能注意到了,整个 pipeline 非常简单,无非就是一个多线程的线程间数据读写。但是,之前介绍的 codec 在哪里?这个问题,并不在 pipeline 中完成,而是 plugin 中。 Logstash 从 1.5 开始,把各个 plugin 拆分成了单独的 gem,主代码里只留下了几个 base.rb 类。所以,要了解详细情况,我们需要阅

  • 我正在用PyCharm做一个项目。项目已打开并配置了解释器,可以成功运行。远程解释器路径已正确映射。这似乎是正确的配置,但PyCharm用“未解决的引用”错误突出显示了我的有效代码,即使对于内置Python函数也是如此。为什么即使代码在运行,它们似乎也没有被检测到?有没有办法让PyCharm正确识别这些? 这个问题的具体实例是远程解释器,但是这个问题也出现在本地解释器上。

  • 我试图将一组房间组件注入存储库,存储库本身使用Dagger2注入ViewModel(在片段中)。 代码如下。 片段: 视图模型: 我的存储库: 最后,对于我的匕首类,我有两个模块: 和我的AppComponent: Dagger编译正常,我可以访问并构建它。但是是不可访问的(检查类将其显示为私有),我需要实际注入依赖项的方法也是如此。结果我得到错误: 我该如何解决这个问题?