我的项目由网络模块,数据模块和应用程序模块组成。 网络模块具有仅公开翻新服务的组件。
@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,则构建会很好,但这会暴露应用模块中的网络模块内容。 有什么想法吗?