Я пытаюсь внедрить Dagger 2 DI в наш проект с несколькими библиотечными модулями (30 модулей, и он будет расти), каждый библиотечный модуль зависит от нескольких других модулей в файлах build.gradle, например: gradleпроект внедрения (": core") .
У нас есть основной модуль : приложение , которое содержит класс приложения и включает в себя каждый модуль библиотеки.
Поэтому я решил, что в модуле будет один одноэлементный компонент: 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 бизнес-модуляпотому что
BusinessModule - это абстрактный класс, который содержит все действия и модели представления в этом модуле библиотеки.
BusinessRepositoryModule предоставляет экземпляр репозитория (позже будет альтернативой фиктивному репозиторию).
- Оставшимися двумя модулями являются фрагменты, которые включаются в действия в BusinessModule .. например: @ ContributesAndroidInjector (modules = [BusinessCollectionVerticalFragmentModule :: class])
Проблема в том, что я рассмотрел только два библиотечных модуля, и это уже грязно.Как правильно управлять модулями проекта такого размера?