我在我的应用程序中创建了一个 Dagger AppComponent,如下所示

protected AppComponent createComponent() {
    return DaggerAppComponent.builder().appModule(new AppModule(this)).build();
}

AppModule 包含一个`FeatureModule,如下所示。
@Module(includes = {FeatureModule.class})
public class AppModule {
   // All the provides here
}

现在,我计划在 FeatureModule 中为 Debug 构建单独设置一个项目。所以我创建了继承自 FeatureModule 的 FeatureDebugModule
@Module
public class FeatureDebugModule extends FeatureModule {

    @Override
    protected void debugBuildSpecificConfig() {
         // Something specific to debug
    }
}

有了这个,我还创建了从 AppModule 继承的 AppDebugModule
@Module(includes = {FeatureDebugModule.class})
public class AppDebugModule : AppModule {
}

最后,我制作了 AppDebugApplication 来设置 Dagger 组件,如下所示
protected AppComponent createComponent() {
    return DaggerAppComponent.builder().appModule(new AppDebugModule(this)).build();
}

不知何故,代码不会在我的 Debug模式下访问 FeatureDebugModule,但仍然在 FeatureModule 代码上。我做错了什么?

最佳答案

显然对于 Dagger,加载的模块基于组件模块中定义的内容。因此在调试中,我使用如下。

@Singleton
@Component(modules = {AppDebugModule.class})
public interface AppDebugComponent extends AppComponent {
    // Inject
}

以及 Dagger 组件的创建
DaggerAppDebugComponent.builder().appDebugModule(new AppDebugModule(this)).build();

在发布中,我使用如下
@Singleton
@Component(modules = {AppReleaseModule.class})
public interface AppReleaseComponent extends AppComponent {
    // Inject
}

以及 Dagger 组件的创建
DaggerAppReleaseComponent.builder().appReleaseModule(new AppReleaseModule(this)).build();

关于android - 如何为调试构建包含 Dagger 调试子模块?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46518545/

10-12 23:55