如何包括用于调试构建的匕首调试子模块



我在我的应用程序中创建daggerappcomponent,如下

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

AppModule包含下面的`taperulemodule。

@Module(includes = {FeatureModule.class})
public class AppModule {
   // All the provides here
}

现在,我计划在功能移动器中有一个单独的项目进行调试。因此,我创建了我的特色杂志模块,从featuremodule

继承
@Module
public class FeatureDebugModule extends FeatureModule {
    @Override
    protected void debugBuildSpecificConfig() {
         // Something specific to debug
    }
}

我还创建了AppDebugmodule从AppModule继承

@Module(includes = {FeatureDebugModule.class})
public class AppDebugModule : AppModule {
}

最后,我做了我制作的AppDebugapplication,将dagger组件设置为

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

以某种方式,代码在我的调试模式下无法访问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();

最新更新