Dagger 2:错误:[ComponentProcessor:MiscError]循环依赖性与生成的代码

问题描述 投票:1回答:1

我正在一个项目中,其中旧的匕首是在代码库中实现的。今天,我尝试将dagger实现优化为dagger 2.2。如您所知,google更新了dagger库以使其易于在android中实现,这里有一些帮助器类,例如Dagger Activity,Dagger Application和Dagger Fragment类。

我已经更新了库,但由于错误而被卡住了

 error: [ComponentProcessor:MiscError]
 dagger.internal.codegen.ComponentProcessor was unable to process this
 interface because not all of its dependencies could be resolved. Check
 for compilation errors or a circular dependency with generated code.
 public abstract interface NewAppComponent extends
 dagger.android.AndroidInjector<com.mallconnect.tdm.TDMApplication> {

NewAppComponent

@Singleton
@Component(modules = [AndroidSupportInjectionModule::class,
            ActivityBuilderModule::class,
            AppModule::class,
            RoomModule::class,
            RetrofitModule::class,
            MappedInModule::class,
            ViewModelFactoryModule::class
])
interface NewAppComponent : AndroidInjector<TDMApplication> {

    /**
     * Session manager can be access any where in the application
     */
    fun sessionManager(): SessionManager

    @Component.Builder
    interface Builder {

        /**
         * [BindsInstance] annotation is used for, if you want to bind particular object or instance
         * of an object through the time of component construction
         *
         * @param application The application instance
         *
         * @return The Builder
         */
        @BindsInstance
        fun application(application: Application): Builder


        /**
         *
         * @return the AppComponent
         */
        fun build(): NewAppComponent

    }

}

ActivityBuilderModule

@Module
public abstract class ActivityBuilderModule {

    @ContributesAndroidInjector(modules = {MainFragmentBuildersModule.class,
            MainViewModelsModule.class})
    abstract Main contributeMainActivity();

    @ContributesAndroidInjector(modules = {AuthViewModel.class})
    abstract BaseActivity contributeBaseActivity();



}

我已经检查了一些StackOverflow帖子,但没有找到解决方法

Dagger2 Circular Dependency Error

Dagger 2.15: Appcomponent - was unable to process this interface

我们如何追踪错误的根源?

android dagger-2
1个回答
0
投票

我已经解决了注释中建议的循环依赖问题

如果不经历component中包含的所有模块,就无法解决该问题!

[当我错误地通过ActivityBuilderModule时,我提供的是AuthViewModel而不是AuthViewModelModule,并且在MainFragmentBuilderModule内部,我也提供了ViewModel而不是ViewModelModule中的ContributeAndroidInjector

© www.soinside.com 2019 - 2024. All rights reserved.