Size: a a a

2020 June 18

IG

Ilya Gulya in Dagger 2
Алексей Ершов
Вопрос даггероджедаям. Хочу инжектить в приложении разные реализации некоторых зависимостей в зависимости от текущего flavor. Какой самый классный способ реализации этого?
Я вижу пока два:
1) Внутри модуля в каждом provide-методе делать одинаковый switch и там возвращать разные зависимости.
2) Сделать разные модули на каждый flavor и подставлять их в компонент. Возможно тут с source sets придётся колдовать, чтобы реализация модуля была в каждом своя, но я не люблю такую организацию кода.
Думаю тут вопрос в том, надо ли тебе бандлить не нужные зависимости в apk или нет :)
Если можно бандлить и не париться - то первый вариант проще.
А если нельзя - то первый вариант и не получится. (без колдовства, разумеется)
источник

АЕ

Алексей Ершов... in Dagger 2
Konstantin Ivanov
Делал подход 2) без кастомного соурс сет
а как без кастомного?
источник

АЕ

Алексей Ершов... in Dagger 2
Ilya Gulya
Думаю тут вопрос в том, надо ли тебе бандлить не нужные зависимости в apk или нет :)
Если можно бандлить и не париться - то первый вариант проще.
А если нельзя - то первый вариант и не получится. (без колдовства, разумеется)
можно бандлить, пока задача только сделать разную логику)
источник
2020 June 19

IG

Ilya Gulya in Dagger 2
#Dagger

В Dagger появится Assisted Inject

Для тех кто не знает - это возможность добавлять параметры в конструкторы или методы, которых нет в графе, и предоставлять их через фабрики.

Подобную реализацию уже сделал Jake Wharton. AssistedInject on Square
источник

IG

Ilya Gulya in Dagger 2
Каеф
источник

АЕ

Алексей Ершов... in Dagger 2
Прямо из коробки?! Офигеть!
источник

АЕ

Алексей Ершов... in Dagger 2
А, это в будущем. Ладно, ждём)
источник
2020 June 26

MK

Maxim Kotlinovsky in Dagger 2
Переслано от Maxim Kotlinovsky
Добрый день! Hilt не хочет инжектить в View в  тестах в многомодульном проекте. Что может быть не так?
источник

MK

Maxim Kotlinovsky in Dagger 2
Переслано от Maxim Kotlinovsky
источник

MK

Maxim Kotlinovsky in Dagger 2
Переслано от Maxim Kotlinovsky
источник

MK

Maxim Kotlinovsky in Dagger 2
Переслано от Maxim Kotlinovsky
источник
2020 June 28

АЕ

Алексей Ершов... in Dagger 2
Как сделать shared scope на несколько экранов, не делая для них общий контейнер-фрагмент?
источник

K

Kirill Vasiliev in Dagger 2
источник
2020 July 03

R

Roman in Dagger 2
Алексей Ершов
Как сделать shared scope на несколько экранов, не делая для них общий контейнер-фрагмент?
Если еще актуально, то тут в кодлабе гугловой есть что-то подобное, шаг 13 вроде, https://codelabs.developers.google.com/codelabs/android-dagger/#12. Так UserComponent делается общим для двух активити, но есть недостаток — conditional field injection, как они сами отмечают.
источник

R

Roman in Dagger 2
Встречный вопрос сообществу :)
Почитал вот тут https://developer.android.com/training/dependency-injection/dagger-multi-module про даггер и мультимодульное приложение. Вначале пишут о приложении без dynamic feature-модулей и говорят использовать сабкомпоненты для feature-модулей, затем, когда говорят о dynamic feature-модулях, рекомендуют использовать отдельные компоненты и использовать проперти dependencies:

@Component(dependencies = [AppComponent::class])
interface LoginComponent {
   fun inject(activity: LoginActivity)
}


для того, чтобы зависимости из AppComponent'а были видны в LoginComponent'е.

А в чем разница в подкапотной работе даггера в этих двух случаях, не могу понять. Могли бы помочь разобраться? Или статьи есть на этот счет, которые можно почитать?
источник

АЕ

Алексей Ершов... in Dagger 2
Roman
Встречный вопрос сообществу :)
Почитал вот тут https://developer.android.com/training/dependency-injection/dagger-multi-module про даггер и мультимодульное приложение. Вначале пишут о приложении без dynamic feature-модулей и говорят использовать сабкомпоненты для feature-модулей, затем, когда говорят о dynamic feature-модулях, рекомендуют использовать отдельные компоненты и использовать проперти dependencies:

@Component(dependencies = [AppComponent::class])
interface LoginComponent {
   fun inject(activity: LoginActivity)
}


для того, чтобы зависимости из AppComponent'а были видны в LoginComponent'е.

А в чем разница в подкапотной работе даггера в этих двух случаях, не могу понять. Могли бы помочь разобраться? Или статьи есть на этот счет, которые можно почитать?
Разница в направлении зависимостей. При использовании сабкомпонентов AppComponent должен знать о Subcomponent, а он лежит в фиче, про которую app не знает.
источник

R

Roman in Dagger 2
Кажется, в статье что-то было про разное направление зависимостей в двух случаях, пойду ещё раз почитаю. Спасибо.
источник

АЕ

Алексей Ершов... in Dagger 2
вы можете прям посмотреть сгенерированный код, и увидеть разницу)
источник

AA

Alidibir Akhbulatov in Dagger 2
Всем привет. Пытаюсь прикрутить ViewModel с ViewModelProvider.Factory в многомодульном сэмпле и столкнулся с одной проблемой:
1. Этот пример работает: https://pastebin.com/ys064ATf
2. А этот - нет: https://pastebin.com/QZkhQxWV

Как сделать так, чтобы заработал 2-й пример? Из ошибки ясно, что Dagger не может найти параметр vmProvider: Provider<ViewModel>, необходимый моей реализации ViewModelProvider.Factory, но вот как его получить с этим подходом?
источник
2020 July 05

YT

Ysim Tokido in Dagger 2
Для чего нужен @subcomponent ?
источник