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

Android Dagger2组件处理器无法处理

严远
2023-03-14

我正在尝试使用Dagger2制作多模块项目。您可以通过链接查看我的代码。在分支是工作解决方案,其中所有匕首类都在表示模块中。

现在,我正在尝试为DI根创建单独的< code>app模块。您可以在< code>develop分支中看到最新的尝试。它不起作用。我想在< code>app模块中创建我的根< code > application component 组件,并从其他模块添加< code > presentation component (子)组件。每次我试着做某事,最终我都会跟着做:

dagger.internal.codegen。ComponentProcessor无法处理“ru.ircover.schultables.app”。ApplicationComponent”,因为不是所有依赖项都可以解析。检查生成的代码是否存在编译错误或循环依赖关系

这很奇怪,因为与main分支相比,我没有更改任何依赖项。唯一改变的是-从根组件Application ationComponent到子PresentationComponent的新链接。据我所知,没有办法将循环依赖项显示为app模块,其内容在演示文稿模块中不可见。我已经遵循了我在google中遇到的所有教程,但都没有帮助。

我已经试过了:

  1. 添加到子组件的根组件获取器。
  2. 添加到子组件的根组件生成器工厂
  3. 添加到根组件特殊模块与子组件链接。
  4. 将子组件的注入方法移动到父组件。

现在我被卡住了。似乎问题出在组件或模块连接的某个地方,但我无法找到它发生的位置和方式。我需要帮助。

共有3个答案

仇睿
2023-03-14

您需要添加dagger.android支持库,因为您的moxy.MvpAppCompatFragment是基于Android支持片段构建的。将其添加到演示文稿gradle文件中:

implementation "com.google.dagger:dagger-android:$dagger_version"
implementation "com.google.dagger:dagger-android-support:$dagger_version"

从您的开发分支的演示文稿/构建中:

implementation "com.google.dagger:dagger:$dagger_version"
kapt "com.google.dagger:dagger-compiler:$dagger_version"
kapt "com.google.dagger:dagger-android-processor:$dagger_version"

在“渐变”设置中:

如果您在dagger.android中使用类,您还会希望包括:

implementation 'com.google.dagger:dagger-android:2.x'
implementation 'com.google.dagger:dagger-android-support:2.x' // if you use the support libraries
annotationProcessor 'com.google.dagger:dagger-android-processor:2.x'
桓智敏
2023-03-14

我已经设法通过以下更改构建您的项目:

  1. 左边是一个演示文稿,右边是一个应用程序,正如您所看到的,我已经删除了dagger android,并将moxy deps作为API(因为您的应用程序是一个主模块,它必须查看所有deps才能构建图形),或者您可以将moxy deps添加到应用程序
  2. 之后,将不会有任何匕首警告,但您需要修复一些文件以完成构建。顺便说一句,将某些东西传递给模块的构造函数是一种不好且不推荐使用的做法。正如您在PresentationModule中看到的,我删除了构造函数并删除了provideContext。我将上下文绑定移动到ApplicationComponent——这是一个很好的地方
  3. 我还从PresentationComponent.Factory中删除了构造函数参数。创建
蒯安平
2023-03-14

基于Google文档,您可以这样做:

1-将@HiltViewModel注释添加到类中

2-用@Inject替换构造函数上的@ViewModelInject批注。

3-从SavedStateHandle构造函数参数中删除@Asisted,如果存在的话

4-从您的构建.gradle文件中删除旧的androidx.hilt:hilt-生命周期-视图模型依赖项

 类似资料:
  • 我遵循这个链接的第二个答案(两个步骤)来实现视频到Youtube的上传:使用curl和api v3在Youtube上上传视频 代码工作正常,但当我执行时,我得到的响应是:状态:嵌入:true license:“YouTube”privacystatus:“unlisted”publicstatsviewable:true uploadstatus:“uploaded”

  • 我是一个初学者,刚刚开始学习Spring Batch。我在这里按照这个教程创建了一个helloworld示例。当我按照教程操作时,我在尝试将导入java类时遇到了一个问题。因此我在网上搜索,发现我需要在build.gradle.中添加一些东西。问题是,即使我在build.gradle中添加了依赖项,我仍然有导入的错误消息。我正在使用EclipseJavaEE IDE 4.5.0(Mars)来完成这

  • 问题内容: 我有一个PHP代码,需要将数据库表数据编码为json。所以我使用了json_encode()。 我使用此处给出的表格-http: //www.geekality.net/2011/08/21/country-names-continent- names-and-iso-3166-codes-for- mysql/ 对于不同的输入,此代码的行为似乎有所不同。 查询- 不返回任何json值

  • 但当我尝试构建以下类时,它表示找不到AbstractProcessor类: 如何让它识别这个类? 下面是确切的错误: 我的导入内容如下所示: 这是我的java版本:

  • 主要内容:v-on,v-on,v-on事件监听可以使用 v-on 指令: v-on <div id="app"> <button v-on:click="counter += 1">增加 1</button> <p>这个按钮被点击了 {{ counter }} 次。</p> </div> <script> new Vue({ el: '#app', data: { counter: 0 } }) </script> 通常情况下,我们需

  • 在这一步,你会在手机详细信息页面让手机图片可以点击。 请重置工作目录: git checkout -f step-10 手机详细信息视图展示了一幅当前手机的大号图片,以及几个小一点的缩略图。如果用户点击缩略图就能把那张大的替换成自己那就更好了。现在我们来看看如何用AngularJS来实现它。 步骤9和步骤10之间最重要的不同在下面列出。你可以在GitHub里看到完整的差别。 控制器 app/js/