Я использую кинжал в многомодульном проекте. Я работаю над функциональным модулем (модулем Gradle), который не зависит от основного модуля приложения.
Модуль gradle основного приложения импортирует мой модуль, поэтому классы в основном модуле недоступны в моем модуле.
См. Эту диаграмму для лучшего понимания.
Предположим, я работаю над модулем :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 инжектор вводит в деятельность?