Как внедрить зависимости между модулями Android с помощью Dagger2 (2.15)

Мой текущий проект Android состоит из следующих модулей

1). Главное приложение

2). Модуль Android A

3). Android-модуль B

4). Модуль Java C

5). Модуль Android D

Я использую Dagger 2 (v2.15) в качестве структуры DI.

Я пытаюсь ввести следующие зависимости: -

Внедрить экземпляры Android-модуля A в главное приложение

Внедрить экземпляры Java-модуля C в главное приложение

Внедрить экземпляры Android-модуля D в главное приложение

Внедрить экземпляры Android-модуля B в Android-модуль A

Каждый модуль имеет следующие два класса / интерфейса, относящиеся к Dagger.

@Module
public class ModuleX {

    @Singleton
    @Provides
    static ClassX provideClassX() {
        return new ClassXImpl();
    }

}


@Singleton
@Component(modules = {ModuleX.class})
public interface ClassXComponent {


}

Мое основное приложение имеет следующие классы / интерфейсы, связанные с кинжалом

@Module
public abstract class MainActivityModule {
    @ContributesAndroidInjector
    abstract MainActivity contributeMainActivity();

    @ContributesAndroidInjector
    abstract Second contributeSecond();
}


@Singleton
@Component(modules = {
        AndroidInjectionModule.class,
        MainActivityModule.class,
        ModuleA.class,
        ModuleB.class,
        ModuleC.class,
        ModuleD.class})
public interface AppComponent {

    @Component.Builder
    interface Builder {
        @BindsInstance
        Builder application(Application application);

        AppComponent build();
    }

    void inject(MyApplication myApplication);
}

Эта конфигурация успешно внедряет все мои необходимые зависимости, кроме инъекции Экземпляры Android Module B в Android Module A. Может ли Dagger2 внедрять зависимости «между» модулями?

Что мне не хватает для достижения желаемого решения?

Не могли бы вы подробнее рассказать о своей проблеме, что вы не можете внедрить из B в A, это компоненты? так как вы настроили график компонентов приложения, все привязки модулей должны быть видны дереву компонентов. Вы также рассматривали подкомпоненты?

trpride 08.04.2018 21:29

В конце концов, я получил эту работу с помощью подкомпонентов.

Hector 09.04.2018 17:42

@Hector, можете ли вы опубликовать ответ своим решением?

XIII-th 05.06.2019 17:52
2
3
330
0

Другие вопросы по теме