2017-10-02 3 views
1

Je suis créer un AppComponent poignard dans ma demande comme ci-dessousComment inclure Dagger Debug SubModule pour la version Debug?

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

Le AppModule comprend un `FeatureModule comme ci-dessous. Maintenant, je prévois d'avoir un élément séparé pour la construction de débogage dans le FeatureModule. Donc, je crée mon FeatureDebugModule héritant de FeatureModule

@Module 
public class FeatureDebugModule extends FeatureModule { 

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

Avec que je crée aussi AppDebugModule héritera de AppModule

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

Et enfin, je fait, je fait AppDebugApplication cette configuration du composant Dagger comme ci-dessous

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

D'une certaine manière, le code n'accède pas au FeatureDebugModule dans mon mode de débogage, mais toujours sur le code FeatureModule . Qu'ai-je fait de mal?

+0

comment avez-vous défini votre " AppDebugApplication "? – Benjamin

Répondre

0

Apparemment pour Dagger, le module chargé est basé sur ce qui est défini dans les modules du composant. Par conséquent dans Debug, j'utilise comme ci-dessous.

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

Et la composante poignard création

DaggerAppDebugComponent.builder().appDebugModule(new AppDebugModule(this)).build(); 

Dans la version, j'ai utilisé comme ci-dessous

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

Et la création d'un composant de poignard

DaggerAppReleaseComponent.builder().appReleaseModule(new AppReleaseModule(this)).build();