#DependencyInjection #Dagger #AssistedInject #Square
Brave New Android World with AssistedInject
Если вы активно используете Dagger, то скорее всего сталкивались с проблемой передачи зависимостей вне графа, например передать id в
Решить эту проблему можно с использование Factory, но это множество boileplate кода. Исправляет это библиотека AssistedInject, а в статье разбирается как ее использовать и как ее применить в Android.
Brave New Android World with AssistedInject
Если вы активно используете Dagger, то скорее всего сталкивались с проблемой передачи зависимостей вне графа, например передать id в
Presenter
. Раньше это решалось те, что создавался новый Dagger компонента, куда этот параметр передается.Решить эту проблему можно с использование Factory, но это множество boileplate кода. Исправляет это библиотека AssistedInject, а в статье разбирается как ее использовать и как ее применить в Android.
Medium
Brave New Android World with AssistedInject
Assisted Inject is interesting feature of dependency injection, but looks very weird at a first grasp. Let me explain when it could be…
#DependencyInjection #Dagger #Fragment
Constructor injection into Fragments with respect of scopes
Android имеет одно неприятное ограничения - основные компоненты должны создаваться только через конструктор по умолчанию. Исключением стал
В статье вы можете найти как решить проблему, когда у вас есть Dagger Scope и нужно делать inject зависимостей из них.
Constructor injection into Fragments with respect of scopes
Android имеет одно неприятное ограничения - основные компоненты должны создаваться только через конструктор по умолчанию. Исключением стал
Fragment
в AndroidX.Fragment 1.1.0, который позволяет задать кастомную FragmentFactory
в FragmentManager
. Я уже ранее рассказывал как можно соединить Dagger и Inject в конструкторы Fragment.В статье вы можете найти как решить проблему, когда у вас есть Dagger Scope и нужно делать inject зависимостей из них.
Medium
Constructor injection into fragments with respect of scopes.
How to use FragmentFactory together with dagger-android and still be able to inject scoped dependencies into your fragments.
#Dagger #DependencyInjection
Вышел Dagger 2.26
Новая версия популярного DI фреймворка увидела свет. Она не привнесла значительных изменений, но постаралась сделать библиотеку лучше:
👉 Миграция dagger-android на AndroidX. Версия на Android Support Library также доступна
👉 Исправление багов инкрементальной компиляции
👉 Удаление использование не Android API из Guava
👉 Breaking changes: companion object больше нельзя объявлять как
Вышел Dagger 2.26
Новая версия популярного DI фреймворка увидела свет. Она не привнесла значительных изменений, но постаралась сделать библиотеку лучше:
👉 Миграция dagger-android на AndroidX. Версия на Android Support Library также доступна
👉 Исправление багов инкрементальной компиляции
👉 Удаление использование не Android API из Guava
👉 Breaking changes: companion object больше нельзя объявлять как
@Module
для Dagger Component. Добавление аннотации необходимо только на внешнем классе.GitHub
Release Dagger 2.26 · google/dagger
What's new
Fix #1700: Remove usages of non-Android Guava APIs. (0925e8f)
Fix #1720: Fix incremental dagger-android-processor in kapt when using dagger.android.experimentalUseStringKeys. (6a0ce...
Fix #1700: Remove usages of non-Android Guava APIs. (0925e8f)
Fix #1720: Fix incremental dagger-android-processor in kapt when using dagger.android.experimentalUseStringKeys. (6a0ce...
#DependencyInjection
Koin – это Dependency Injection или Service Locator?
Можно ли Koin назвать Dependency Injection? В статье вы найдете разбор "по понятиям" для Koin.
Со своей стороны могу сказать одно - Koin упростил мне работу с DI и неважно к какому классу его отнесут.
Koin – это Dependency Injection или Service Locator?
Можно ли Koin назвать Dependency Injection? В статье вы найдете разбор "по понятиям" для Koin.
Со своей стороны могу сказать одно - Koin упростил мне работу с DI и неважно к какому классу его отнесут.
Хабр
Koin – это Dependency Injection или Service Locator?
Введение В Android-разработке для DI традиционно используют Dagger 2, очень мощный фреймворк с кодогенерацией. Но есть проблема: новичкам сложно его использовать...
#DependencyInjection
A Dependency Injection Showdown
Выбор Dependency Injection (DI) для вашего проекта важный вопрос, так как поменять его в будущем может быть непростой задачей. Сравнение популярных JVM DI: Dagger 2, Koin, Toothpick, Kodein
Мой личный выбор - Koin. Хотите узнать больше аргументов моего выбора - выбирайте 🎥 и если будет 20+ я сделаю видео разбор преимуществ, благодаря которым я выбрал Koin, и недостатков, которые меня волнуют при росте проекта.
A Dependency Injection Showdown
Выбор Dependency Injection (DI) для вашего проекта важный вопрос, так как поменять его в будущем может быть непростой задачей. Сравнение популярных JVM DI: Dagger 2, Koin, Toothpick, Kodein
Мой личный выбор - Koin. Хотите узнать больше аргументов моего выбора - выбирайте 🎥 и если будет 20+ я сделаю видео разбор преимуществ, благодаря которым я выбрал Koin, и недостатков, которые меня волнуют при росте проекта.
Medium
A Dependency Injection Showdown
Choosing a dependency framework for your Android app is a big decision, it’s not something that you can easily replace later on…
#DependencyInjection
Вышел Koin 2.1.0
In this version:
🚀 Исправление багов и улучшение производительности
⚒️ Улучшения Scope API
🤖 Поддержка создания
🤖 Поддержка State
🚒 Улучшения в API для тестов
🎁 Gradle plugin для проверки модулей (пока умеет не так много)
🎉 Много исправлений
Сейчас разработчик Koin активно работает над поддержкой Multiplatform
Вышел Koin 2.1.0
In this version:
🚀 Исправление багов и улучшение производительности
⚒️ Улучшения Scope API
🤖 Поддержка создания
Fragment
через Koin на основе FragmentFactory
🤖 Поддержка State
ViewModel
🚒 Улучшения в API для тестов
🎁 Gradle plugin для проверки модулей (пока умеет не так много)
🎉 Много исправлений
Сейчас разработчик Koin активно работает над поддержкой Multiplatform
#AndroidAcademy #Minsk #DependencyInjection
Android Academy Minsk Advanced Topic #3 - Dependency Injection
Сразу после того как отгремит праздник 8 марта Android Academy Minsk собирает всех для обсуждения Dependency Injection в проектах. В планах рассказать вам что такое Dependency Injection и рассказать о ней на примере Dagger 2
Android Academy Minsk Advanced Topic #3 - Dependency Injection
Сразу после того как отгремит праздник 8 марта Android Academy Minsk собирает всех для обсуждения Dependency Injection в проектах. В планах рассказать вам что такое Dependency Injection и рассказать о ней на примере Dagger 2
#DependencyInjection #Video #AndroidBroadcast
Почему Koin?
Android разработка строится вокруг определенных рекомендаций-правил и одним из таких является использование Dagger 2. Для себя я решил, что так нельзя и для Kotlin мы заслуживаем лучшего решения.
В видео я осветил почему перешел на Koin, свои впечатления и чего я боюсь в будущем от использования этой библиотеки для DI.
Хотите больше видео и качественнее? Поддержите проект на Boosty
Почему Koin?
Android разработка строится вокруг определенных рекомендаций-правил и одним из таких является использование Dagger 2. Для себя я решил, что так нельзя и для Kotlin мы заслуживаем лучшего решения.
В видео я осветил почему перешел на Koin, свои впечатления и чего я боюсь в будущем от использования этой библиотеки для DI.
Хотите больше видео и качественнее? Поддержите проект на Boosty
#Dagger #DependencyInjection
Вышел Dagger 2.27
Новая версия популярного DI фреймворка привнесла следующий улучшения:
👉 Экспериментальный формат сообщений об ошибках (подробнее ниже)
👉 Более оптимальная генерация кода в зависимости от того как в класс происходит inject зависимостей
👉 Поддержка конструкторов с layout id из AndroidX
👉 Убрали использование Guava API, которое недоступно для использования в Android
👉 Улучшена работа с Kotlin
👉 Исправление багов
Экспериментальный формат сообщений об ошибках
Позволяет улучшить читабельность сообщений об ошибке. Этот формат в будущем станет стандартным.
При включение нового режима поменяется:
👉 Сокращенные имена всех классов
👉 Ошибки для каждого компонента отображаются как одна
👉 Добавление цветов к тэгам ошибок для визуального разделения ошибок
👉 Уменьшен объем информации в некоторых сообщениях
Для включения надо использовать
Вышел Dagger 2.27
Новая версия популярного DI фреймворка привнесла следующий улучшения:
👉 Экспериментальный формат сообщений об ошибках (подробнее ниже)
👉 Более оптимальная генерация кода в зависимости от того как в класс происходит inject зависимостей
👉 Поддержка конструкторов с layout id из AndroidX
👉 Убрали использование Guava API, которое недоступно для использования в Android
👉 Улучшена работа с Kotlin
👉 Исправление багов
Экспериментальный формат сообщений об ошибках
Позволяет улучшить читабельность сообщений об ошибке. Этот формат в будущем станет стандартным.
При включение нового режима поменяется:
👉 Сокращенные имена всех классов
👉 Ошибки для каждого компонента отображаются как одна
👉 Добавление цветов к тэгам ошибок для визуального разделения ошибок
👉 Уменьшен объем информации в некоторых сообщениях
Для включения надо использовать
-Adagger.experimentalDaggerErrorMessages=enabled
GitHub
Release Dagger 2.27 · google/dagger
What's New
Fix #955: No longer generate MembersInjectors for types without local injection sites. (20f6442)
Fix #1414: Allow multiple scoped component dependencies (113c498)
Fix #1734: Add sup...
Fix #955: No longer generate MembersInjectors for types without local injection sites. (20f6442)
Fix #1414: Allow multiple scoped component dependencies (113c498)
Fix #1734: Add sup...
#DependencyInjection
Unboxing Koin 2.1
Не так давно вышла следующая версия популярного DI фреймворка на чистом Kotlin - Koin 2.1.
Улучшения в новой версии:
🚀 Изменения во внутренней архитектуре и лучшая производительность
👉 Изменения в работе со Scope
👉 Koin Gradle plugin — проверка графа во время компиляции
👉 Inject зависимостей через setter (experimental)
👉 Новые JUnit правила, которые избавляют от зависимости на какую либо mock библиотеку
👉 Лучшая совместимость с Ktor
Обновления для Android:
👉 Android Lifecycle Scopes
👉 Поддержка SavedState для ViewModel
👉 Поддержка inject в конструкторы Fragment
Следующая версия будет 3.0, которая принесет поддержку Kotlin MPP 🔥🔥🔥
Unboxing Koin 2.1
Не так давно вышла следующая версия популярного DI фреймворка на чистом Kotlin - Koin 2.1.
Улучшения в новой версии:
🚀 Изменения во внутренней архитектуре и лучшая производительность
👉 Изменения в работе со Scope
👉 Koin Gradle plugin — проверка графа во время компиляции
👉 Inject зависимостей через setter (experimental)
👉 Новые JUnit правила, которые избавляют от зависимости на какую либо mock библиотеку
👉 Лучшая совместимость с Ktor
Обновления для Android:
👉 Android Lifecycle Scopes
👉 Поддержка SavedState для ViewModel
👉 Поддержка inject в конструкторы Fragment
Следующая версия будет 3.0, которая принесет поддержку Kotlin MPP 🔥🔥🔥
Medium
Unboxing Koin 2.1 📦 🎉
What’s new for Koin 2.1?
#Dagger #DependencyInjection
Dagger dependencies beyond the basics
Dagger - очень популярное решения для организации DI в Android проектах. Одна печаль - инструмент мощный, но в нем легко запутаться, так как точных рекомендаций по использованию от авторов нет.
В статье разбирается как лучше доставлять зависимости с помощью Dagger в Android из всех возможных вариантов.
Dagger dependencies beyond the basics
Dagger - очень популярное решения для организации DI в Android проектах. Одна печаль - инструмент мощный, но в нем легко запутаться, так как точных рекомендаций по использованию от авторов нет.
В статье разбирается как лучше доставлять зависимости с помощью Dagger в Android из всех возможных вариантов.
Medium
Dagger dependencies beyond the basics
Dagger is one of the most polarizing subjects in the Android community, either you love it, or you hate it. Some developers love it and…
#DependencyInjection #ArchitectureComponents #ViewModel
Injecting ViewModel — hard to easy
В современной Android разработке очень популярна архитектура MVVM на основе Arch Components. И куда же современное приложение без Dependency Injection (DI).
Создание ViewModel и доставка зависимостей в ее конструктор с помощью DI - нетривиальная задача, так как создать ViewModel просто через конструктор неправильно, нужно делать это через ViewModelProvider.Factory.
В статье разбирается как решить эту задачу с помощью Dagger и Koin.
Injecting ViewModel — hard to easy
В современной Android разработке очень популярна архитектура MVVM на основе Arch Components. И куда же современное приложение без Dependency Injection (DI).
Создание ViewModel и доставка зависимостей в ее конструктор с помощью DI - нетривиальная задача, так как создать ViewModel просто через конструктор неправильно, нужно делать это через ViewModelProvider.Factory.
В статье разбирается как решить эту задачу с помощью Dagger и Koin.
Medium
Injecting ViewModel — hard to easy
Comparing Dagger 2, Koin and Service Locator approaches
#Dagger #Hilt #DependencyInjection
Scoping in Android and Hilt
В Dagger мы привыкли работать с Subcomponent и делать разные Scope, для того чтобы управлять жизнью отдельных объектов графа. В Hilt нас ждут перемены работы с графом и это задело Scope тоже
В статье происходит разбор того как создать Scope для ViewModel при использовании Hilt
Scoping in Android and Hilt
В Dagger мы привыкли работать с Subcomponent и делать разные Scope, для того чтобы управлять жизнью отдельных объектов графа. В Hilt нас ждут перемены работы с графом и это задело Scope тоже
В статье происходит разбор того как создать Scope для ViewModel при использовании Hilt
Medium
Scoping in Android and Hilt
Scoping an object A to another object B means that throughout the lifecycle of B, it’ll always have the same instance of A. When it comes…
#AndroidBroadcast #DependencyInjection #Dagger
Dagger Hilt Deep Dive (Livestream EN)
В четверг, 3 сентября, в 19:30 обсуждаем Dagger Hilt с Manuel Vivo, Android Developer Relations Engineer в Google
Dagger Hilt - это надстройка над Dagger под Android, призванная убрать множество boileplate кода, который приходится писать для модулей и компонентов.
Manuel занимается архитектурой приложений, Kotlin, Coroutines, Dependency Injection, а также Jetpack Compose. Ранее работал в Capital One.
Dagger Hilt Deep Dive (Livestream EN)
В четверг, 3 сентября, в 19:30 обсуждаем Dagger Hilt с Manuel Vivo, Android Developer Relations Engineer в Google
Dagger Hilt - это надстройка над Dagger под Android, призванная убрать множество boileplate кода, который приходится писать для модулей и компонентов.
Manuel занимается архитектурой приложений, Kotlin, Coroutines, Dependency Injection, а также Jetpack Compose. Ранее работал в Capital One.
#Dagger #DependencyInjection
Вышел Dagger 2.29
Новая версия Dagger в которой появились
👉 артефакты Hilt для Android и чистых Java/Kotlin проектов
👉 Новая опция
👉 Новая опция dagger.strictMultibindingValidation, позволяющая проверять multibinding в графе
👉 Исправление багов
Вышел Dagger 2.29
Новая версия Dagger в которой появились
👉 артефакты Hilt для Android и чистых Java/Kotlin проектов
👉 Новая опция
dagger.validateTransitiveComponentDependencies
, которая отключает транзитивную проверку зависимостей компонентов👉 Новая опция dagger.strictMultibindingValidation, позволяющая проверять multibinding в графе
👉 Исправление багов
GitHub
Release Dagger 2.29 · google/dagger
Do not depend on this release
Depend on release 2.29.1 instead, which fixes issue #2086.
Depend on release 2.29.1 instead, which fixes issue #2086.
#Koin #DependencyInjection
What’s next with Koin? — 2.2 & 3.0 releases
Koin - одно из популярных решений для DI для проектов на Kotlin. По сравнению с Dagger он убрал долгую компиляцию, упростил объявление зависимостей, но потерял проверку графа во время компиляции.
Совсем скоро выйдет релиз 2.2 этой библиотеки в которой будет:
👉
👉 Поддержка
👉 Поддержка Jetpack Compose
👉 Более простой способ описания Android Scope-ов
👉 Проведены работы под капотом: создать объект Koin Context становится проще
👉 Возможность положить параметр, который inject-ится в зависимость, в граф. По аналогии с
👉 Поддержка JUnit 5
В Koin 3.0 нас ждет поддержка Kotlin Multiplatform
What’s next with Koin? — 2.2 & 3.0 releases
Koin - одно из популярных решений для DI для проектов на Kotlin. По сравнению с Dagger он убрал долгую компиляцию, упростил объявление зависимостей, но потерял проверку графа во время компиляции.
Совсем скоро выйдет релиз 2.2 этой библиотеки в которой будет:
👉
stateViewModel()
и viewModel()
буду заменены на viewModel()
👉 Поддержка
WorkManager
👉 Поддержка Jetpack Compose
👉 Более простой способ описания Android Scope-ов
👉 Проведены работы под капотом: создать объект Koin Context становится проще
👉 Возможность положить параметр, который inject-ится в зависимость, в граф. По аналогии с
StateHandleBundle
👉 Поддержка JUnit 5
В Koin 3.0 нас ждет поддержка Kotlin Multiplatform
Medium
What’s next with Koin? — 2.2 & 3.0 releases
Hi Koin users 👋, Koin 2.2.0 is almost there. This new milestone brings better stability, some API rework and also, helps you inject Work…
#DependencyInjection #SOLID #Architecture
DIP vs IoC vs DI в мире Android
Разбор разницы между
DIP vs IoC vs DI в мире Android
Разбор разницы между
Dependency inversion principle
(DIP), Inversion of control
(IoC) и Dependency injection
(DI). Помимо прочего рассматриваются пограничные случаи, когда легко спутать эти термины#DependencyInjection
Вышел Dagger 2.30
👉 Hilt депрекейтнул ApplicationComponent и вскоре его удалят и заменят SingletonComponent
👉 Hilt стал поддерживать
👉 Dagger по умолчанию теперь использует
👉 Исправление багов
Вышел Dagger 2.30
👉 Hilt депрекейтнул ApplicationComponent и вскоре его удалят и заменят SingletonComponent
👉 Hilt стал поддерживать
@BindValue val
👉 Dagger по умолчанию теперь использует
experimentalDaggerErrorMessages
. Подробности о новом формате вывода ошибок здесь👉 Исправление багов
#DependencyInjection
Migrating from Dagger to Hilt — Is it worth it?
Hilt предназначен упростить работу с Dagger в Android, но почему-то не все спешат переходить на него, а именно:
👉 Упростить Inject в конструкторы
👉 Упростить тестирование, с помощью более легкой замены Dagger модулей и прокалывания зависимостей в граф
👉 Стандартные Dagger компоненты для основных компонентов приложения
Мне лично очень не хватает поддержки Inject в конструкторы
Migrating from Dagger to Hilt — Is it worth it?
Hilt предназначен упростить работу с Dagger в Android, но почему-то не все спешат переходить на него, а именно:
👉 Упростить Inject в конструкторы
ViewModel
и различные Worker
из WorkManager
👉 Упростить тестирование, с помощью более легкой замены Dagger модулей и прокалывания зависимостей в граф
👉 Стандартные Dagger компоненты для основных компонентов приложения
Мне лично очень не хватает поддержки Inject в конструкторы
Fragment
#Dagger #DependencyInjection
Вышел Dagger 2.31
Новая версия Dagger радует новыми фичами:
🔥 Поддержка Assisted Injection - возможность передать параметры во время создания объекта, а не из DI графа. Подробности здесь
Hilt:
👉
👉
👉 Удалили
👉 Небольшие улучшения в настройке Gradle плагина и поддержке многомодульных проектов
Вышел Dagger 2.31
Новая версия Dagger радует новыми фичами:
🔥 Поддержка Assisted Injection - возможность передать параметры во время создания объекта, а не из DI графа. Подробности здесь
Hilt:
👉
@TestInstallIn
- позволяет описывать глобально подмену тестовых модулей вместо @UninstallModules
на отдельных тестах👉
@HiltViewModel
- замена @ViewModelInject
. Отличается тем что делает inject из ViewModelComponent с @ViewModelScope
. Подробнее здесь 👉 Удалили
ApplicationComponent
. Мигрируемся на SingletonComponent
👉 Небольшие улучшения в настройке Gradle плагина и поддержке многомодульных проектов