我正在一个项目中,其中旧的匕首是在代码库中实现的。今天,我尝试将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
我们如何追踪错误的根源?
我已经解决了注释中建议的循环依赖问题
如果不经历
component
中包含的所有模块,就无法解决该问题!
[当我错误地通过ActivityBuilderModule
时,我提供的是AuthViewModel
而不是AuthViewModelModule
,并且在MainFragmentBuilderModule
内部,我也提供了ViewModel
而不是ViewModelModule
中的ContributeAndroidInjector