我在我的应用程序中创建了一个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();
}
不知何故,代码在我的调试模式下不访问FeatureDebugModule
,但仍然在FeatureModule
代码上。我做错了什么?
答案 0 :(得分:0)
显然,对于Dagger,加载的模块基于组件模块中定义的内容。因此在Debug中,我使用如下。
@Singleton
@Component(modules = {AppDebugModule.class})
public interface AppDebugComponent extends AppComponent {
// Inject
}
创建匕首组件
DaggerAppDebugComponent.builder().appDebugModule(new AppDebugModule(this)).build();
在发布中,我使用如下
@Singleton
@Component(modules = {AppReleaseModule.class})
public interface AppReleaseComponent extends AppComponent {
// Inject
}
创建匕首组件
DaggerAppReleaseComponent.builder().appReleaseModule(new AppReleaseModule(this)).build();