Мой проект состоит из сетевого модуля, модуля данных и модуля приложения.В сетевом модуле есть компонент, который предоставляет только услугу дооснащения.
@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, но это выставляет материал сетевого модуля в модуле приложения.Есть идеи?