Настройка Dagger 2 в многомодульном проекте - PullRequest
0 голосов
/ 26 сентября 2018

Мой проект состоит из сетевого модуля, модуля данных и модуля приложения.В сетевом модуле есть компонент, который предоставляет только услугу дооснащения.

@Component(modules = [NetworkModule::class])
@NetworkScope
interface NetworkComponent {
  fun apiService(): ApiService
}

В модуле данных есть компонент (еще не завершенный), который будет предоставлять доступ к комнатам DAO.Этот компонент имеет зависимость NetworkComponent.

@Component(
  dependencies = [NetworkComponent::class],
  modules = [DataModule::class]
)
@DataScope
interface DataComponent

Наконец, у меня есть компонент приложения, имеющий зависимость DataComponent.

@Component(
  dependencies = [DataComponent::class],
  modules = [AppModule::class] 
)
@AppScope
interface AppComponent {
  fun application(): Application
}

Моя цель в этой настройке состоит в том, чтобы сетевые модули были видны тольков модуле данных, поэтому у меня есть это в build.gradle:

implementation project(':network')

Тем не менее, сборка завершается неудачно, так как модуль приложения (который имеет модуль данных в качестве зависимости) не может найти Retrofit (который намеренно невыставлено, поскольку я хочу сохранить сетевые компоненты в собственном модуле).

Сборка сборки хороша, если я изменю реализацию на api, но это выставляет материал сетевого модуля в модуле приложения.Есть идеи?

...