如何在android库项目

时间:2017-04-23 21:06:15

标签: java android dagger-2

我有一个核心Android库,我定义了接口数量及其默认实现。所有这些都是由CoreCompodule公开的CoreModule公开的。

核心模块

@Module
public class CoreModule {

@Provides
public IAuthenticationViewExtension provideToolsViewExtension() {
    return new AuthenticationViewExtension();
}
@Provides
public ISettingsViewExtension provideISettingsViewExtension() {
    return new SettingsViewExtension();
}
}

核心组件

@Component( modules = {CoreModule.class})
public interface CoreComponent {
CoreComponent coreComponent();
void inject(BaseLauncher baseLauncher);
ISettingsViewExtension iSettingsViewExtension();
}

所有实现仅在Core库中注入。

还有一个依赖Core库的Ui库。此外,Ui库可以为Core库中定义的某些接口提供自定义实现。

├── Ui Library
  └── Core Library
└── Core Library

为了实现目标,我在Ui库中创建了自定义@component和@module

@Component(dependencies = {UiComponent.class}, 
modules = {UiModule.class})
public interface UiComponent {
}

@Module
public class DemoUiModule {
@Provides
public IAuthenticationViewExtension provideToolsViewExtension() {
    return new CustomAuthenticationViewExtension();
}
}

我认为为Core库提供自定义实现的最佳解决方案是使用子组件但不幸的是,它似乎不可能,因为核心库没有其他库的可见性(Ui库及其& #39; s @component),所以我无法在Core库中注入任何自定义实现。 有什么帮助吗?

0 个答案:

没有答案