我在我的应用程序中创建了一个 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/