#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 плагина и поддержке многомодульных проектов