【发布时间】:2018-12-12 11:58:19
【问题描述】:
我目前正在开发一个多模块应用程序。 基本上有4个模块:
- 带有 UI 的应用模块
- 带有模型/接口的合同模块
- 具有实际业务逻辑的实现模块
- 依赖注入模块,允许为应用提供实现
这意味着应用程序不直接依赖于实施模块。
我基本上有以下设置:
应用程序组件
@Component(
dependencies = {
BaseComponent.class
},
modules = {
AndroidInjectionModule.class,
AndroidSupportInjectionModule.class,
ContributesAndroidInjectorModule.class
}
)
@ApplicationScope
public interface ApplicationComponent extends AndroidInjector<MyApplication> {
@Component.Builder
interface Builder {
Builder baseComponent(BaseComponent baseComponent);
ApplicationComponent build();
}
}
基础组件
@Component(
modules = {
...
}
)
@Singleton
public interface BaseComponent {
@Component.Builder
interface Builder {
@BindsInstance
Builder context(@ApplicationContext Context context);
@BindsInstance
Builder configuration(AppConfiguration configuration);
BaseComponent build();
}
ExposedDependency exposedDependency();
}
此设置完美运行,除了在 BaseComponent 中安装使用 @ContributesAndroidInjector 的模块:我找不到将包含 AndroidInjector 的地图暴露在 BaseComponent 上并添加到 ApplicationComponent 的方法。
有没有办法在 BaseComponent 中公开某种映射以将 AndroidInjectors 添加到 ApplicationComponent 中?
(我会尝试在没有敏感信息的情况下将此问题提取到 git repo)
【问题讨论】: