2017-10-02 9 views
1

AppModuleは、以下のように `FeatureModuleが含まDagger Debug SubModuleをDebugビルドに含めるには?

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

以下のように私は自分のアプリケーションでダガーAppComponentを作成しています。

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

ここで、FeatureModuleのDebugビルド用に別のアイテムを用意する予定です。だから私は、私はまたAppDebugModuleが最後に

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

そしてAppModule

から継承作成FeatureModule

からそれと
@Module 
public class FeatureDebugModule extends FeatureModule { 

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

を継承し、私のFeatureDebugModuleを作成し、私は以下のようにAppDebugApplicationそのセットアップダガーコンポーネントを作っ作っ

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

どういうわけか、私のデバッグモードでFeatureDebugModuleにアクセスしませんでしたが、まだFeatureModuleコードにあります。私は何を間違えたのですか?

+0

を使用し、どのように "あなたを定義しましたAppDebugApplication "? – Benjamin

答えて

0

明らかにDaggerの場合、ロードされたモジュールは、コンポーネントのモジュールで定義されているものに基づいています。したがって、デバッグでは、以下のように使用します。リリースでは

@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();