在多模块项目中设置Dagger 2

时间:2018-09-26 14:51:59

标签: android gradle dagger-2 dagger

我的项目由网络模块,数据模块和应用程序模块组成。 网络模块具有仅公开翻新服务的组件。

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

数据模块具有一个组件(尚未完成),该组件将公开Room 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,则构建会很好,但这会暴露应用模块中的网络模块内容。 有什么想法吗?

0 个答案:

没有答案