我正在尝试使用
Dagger2
制作多模块项目。您可以在链接后面看到我的代码。在 main
分支中是工作解决方案,其中所有匕首类都位于
presentation
模块中。现在我正在尝试为 DI 根创建单独的
app
模块。您可以在
develop
分支中看到最新的尝试。它不起作用。我想在
ApplicationComponent
模块中创建我的根
app
组件,并添加来自其他模块的
PresentationComponent
(子)组件。每次我尝试某件事,最终我都会得到以下结果:
dagger.internal.codegen.ComponentProcessor 无法处理“ru.ircover.schultetables.app.ApplicationComponent”,因为并非其所有依赖项都可以解决。检查编译错误或生成代码的循环依赖这很奇怪,因为与
main
分支相比,我没有更改任何依赖项。唯一改变的是 - 从根组件
ApplicationComponent
到子组件
PresentationComponent
的新链接。据我了解,无法将循环依赖显示为
app
模块,并且其内容在
presentation
模块中不可见。我已经按照我在谷歌上遇到的所有教程进行了操作,但没有一个有帮助。我已经尝试过:
Builder
或
Factory
。
subcomponent
链接添加到根组件特殊模块。
inject
方法移动到父组件。
Google文档你可以这样做:
@HiltViewModel
注释
@ViewModelInject
注释替换为
@Inject
。
@Assisted
构造函数参数中删除
SavedStateHandle
- 如果存在
androidx.hilt:hilt-lifecycle-viewmodel
文件中删除旧的
build.gradle
依赖项
基于 Android 支持片段构建的。将其添加到您的演示文稿 gradle 文件中:
implementation "com.google.dagger:dagger-android:$dagger_version"
implementation "com.google.dagger:dagger-android-support:$dagger_version"
presentation/build.gradle:
implementation "com.google.dagger:dagger:$dagger_version"
kapt "com.google.dagger:dagger-compiler:$dagger_version"
kapt "com.google.dagger:dagger-android-processor:$dagger_version"
来自 Gradle 设置:
如果您在 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'