我正在尝试将Dagger 2 DI实现到我们的多库模块项目(30个模块并且它将会增长),每个库模块依赖于build.gradle文件中的其他几个模块,例如:gradle implementation project(“:core “)。
我们有主模块:app,它包含应用程序类并包含每个库模块。
所以我决定在app模块中有一个单独的组件,它将包括下面的所有模块。
@Component(modules = [
AppModule::class,
AndroidSupportInjectionModule::class,
ViewModelFactoryModule::class,
BusinessModule::class,
BusinessRepositoryModule::class,
BusinessDetailFragmentModule::class,
BusinessCollectionVerticalFragmentModule::class
])
@Singleton
interface AppComponent {
@Component.Builder
interface Builder {
@BindsInstance
fun application(application: Application): Builder
fun build(): AppComponent
}
fun inject(mainApplication: MainApplication)
}
我有4个业务模块的原因是因为
问题是,我只覆盖了两个库模块,而且它已经很乱了。管理这么大的项目模块的正确方法是什么?
您正在调用应用程序级别上的所有组件。在应用程序级别使用所有组件是低效的。制作单独的组件并使用@scope表示法将组件的生命周期绑定到活动。