Android Dagger2恶意处理器无法处理

xytpbqjk  于 2024-01-04  发布在  Android
关注(0)|答案(3)|浏览(162)

我试图使多模块项目与Dagger2。你可以看到我的代码following the link。在main分支是工作解决方案,其中所有的匕首类都在presentation模块。
现在我尝试为DI根创建单独的app模块。你可以看到最新的尝试in the develop branch。它不工作。我想在app模块中创建我的根ApplicationComponent组件,并从其他模块添加PresentationComponent(sub)组件。每次我尝试一些东西,最终我得到以下结果:
dagger.internal.codegen. configentProcessor无法处理“ru. iscover.schultetables.app.ApplicationComponent”,因为无法解析其所有依赖项。请使用生成的代码检查编译错误或循环依赖项
这很奇怪,因为与main分支相比,我没有改变任何依赖关系。唯一改变的是-从根组件ApplicationComponent到子组件PresentationComponent的新链接。据我所知,没有办法将循环依赖显示为app模块,并且其内容在presentation模块中不可见。我已经遵循了我在Google,但都没有帮助。
我已经试过了:
1.添加到子组件的根组件getter。
1.添加到子组件的根组件BuilderFactory
1.使用subcomponent链接添加到根组件特殊模块。
1.将子组件的inject方法移动到父组件。
现在我被卡住了。似乎问题是在组件或模块连接的某个地方,但我无法找到它发生在哪里以及如何发生的。我需要帮助。

z8dt9xmd

z8dt9xmd1#

基于Google documentation,你可以这样做:
1.将@HiltViewModel注解添加到类中
1.将构造函数上的@ViewModelInject注解替换为@Inject
1.从SavedStateHandle构造函数参数中删除@Assisted(如果存在)
1.从build.gradle文件中删除旧的androidx.hilt:hilt-lifecycle-viewmodel依赖项

jum4pzuy

jum4pzuy2#

我已经成功地用这些更改构建了您的项目:
1.左边是一个演示文稿,右边是一个应用程序,正如你所看到的,我已经删除了dagger-android,并将moxy deps作为API(因为你的应用程序是一个主模块,它必须看到所有的deps才能构建一个图形),或者你可以只将moxy deps添加到appx 1c 0d1x
1.在此之后,不会有任何dagger警告,但您需要修复一些文件以完成构建。顺便说一句,将某些内容传递给模块的构造函数是一种不好的和不推荐的做法。正如您在PresentationModule中所看到的,我删除了构造函数并删除了provideContext。我将Context绑定移动到ApplicationComponent -这是一个很好的和正确的地方。

1.我还从PresentationComponent.Factory.create

中删除了构造函数参数

lc8prwob

lc8prwob3#

您需要添加dagger.android支持库,因为您的moxy.MvpAppCompatFragment是built on Android Support Fragments。将此添加到演示文稿gradle文件中:

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

字符串
从你的开发分支的presentation/build.gradle:

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


在Gradle设置中:
如果你在dagger.android中使用类,你还需要包括:

  1. implementation 'com.google.dagger:dagger-android:2.x'
  2. implementation 'com.google.dagger:dagger-android-support:2.x' // if you use the support libraries
  3. annotationProcessor 'com.google.dagger:dagger-android-processor:2.x'

展开查看全部

相关问题