Как получить экземпляр AppComponent в другом модуле - PullRequest
1 голос
/ 27 января 2020

Я использую кинжал в многомодульном проекте. Я работаю над функциональным модулем (модулем Gradle), который не зависит от основного модуля приложения.

Модуль gradle основного приложения импортирует мой модуль, поэтому классы в основном модуле недоступны в моем модуле.

См. Эту диаграмму для лучшего понимания.

enter image description here

Предположим, я работаю над модулем :feature. и в импорте build.gradle модуля app :feature

implementation project(':feature')

Теперь у меня возникли некоторые проблемы с настройкой моего кинжала. AppComponent находится внутри модуля :app, который недоступен в :feature

. Я внедряю зависимости в мои действия и фрагменты в :feature с помощью AndroidInjector. Таким образом, даже если AppComponent недоступен в модуле :feature, кинжал сможет разрешать график (с помощью @ContributesAndroidInjector), что упрощает внедрение в классы каркаса. (действия, сервисы, фрагменты)

Но у меня есть нормальный класс Feature.java в моем модуле: feature, который является классом запуска для моей функции (вид класса Application). Я звоню Feature.init(), где я запускаю все необходимые объекты для своей функции.

Здесь мне нужно использовать Dagger и делать инъекцию здесь.

        appComponent.inject(this);

Но проблема в том, что я Столкнувшись здесь, AppComponent не доступен здесь. Мне нужно ввести определенные зависимости из AppComponent, но, поскольку

AppComponent является частью :app модуля, и моя функция не импортирует :app Я не могу получить экземпляр AppComponent. Есть ли способ решить эту проблему? Мол, как android инжектор вводит в деятельность?

...