Android Broadcast
14.1K subscribers
3.41K photos
295 videos
11 files
5.7K links
Подборка новостей и статей для Android разработчиков.

Связь с автором @android_broadcast_bot
Реклама @android_broadcast_bot

РКН https://abdev.by/rkn_tg_ab
Download Telegram
#DependencyInjection #Dagger #AssistedInject #Square

Brave New Android World with AssistedInject

Если вы активно используете Dagger, то скорее всего сталкивались с проблемой передачи зависимостей вне графа, например передать id в Presenter. Раньше это решалось те, что создавался новый Dagger компонента, куда этот параметр передается.

Решить эту проблему можно с использование Factory, но это множество boileplate кода. Исправляет это библиотека AssistedInject, а в статье разбирается как ее использовать и как ее применить в Android.
#DependencyInjection #Dagger #Fragment

Constructor injection into Fragments with respect of scopes

Android имеет одно неприятное ограничения - основные компоненты должны создаваться только через конструктор по умолчанию. Исключением стал Fragment в AndroidX.Fragment 1.1.0, который позволяет задать кастомную FragmentFactory в FragmentManager. Я уже ранее рассказывал как можно соединить Dagger и Inject в конструкторы Fragment.

В статье вы можете найти как решить проблему, когда у вас есть Dagger Scope и нужно делать inject зависимостей из них.
#Dagger #DependencyInjection

Вышел Dagger 2.26

Новая версия популярного DI фреймворка увидела свет. Она не привнесла значительных изменений, но постаралась сделать библиотеку лучше:
👉 Миграция dagger-android на AndroidX. Версия на Android Support Library также доступна
👉 Исправление багов инкрементальной компиляции
👉 Удаление использование не Android API из Guava
👉 Breaking changes: companion object больше нельзя объявлять как @Module для Dagger Component. Добавление аннотации необходимо только на внешнем классе.
#DependencyInjection

Koin – это Dependency Injection или Service Locator?

Можно ли Koin назвать Dependency Injection? В статье вы найдете разбор "по понятиям" для Koin.

Со своей стороны могу сказать одно - Koin упростил мне работу с DI и неважно к какому классу его отнесут.
#DependencyInjection

A Dependency Injection Showdown

Выбор Dependency Injection (DI) для вашего проекта важный вопрос, так как поменять его в будущем может быть непростой задачей. Сравнение популярных JVM DI: Dagger 2, Koin, Toothpick, Kodein

Мой личный выбор - Koin. Хотите узнать больше аргументов моего выбора - выбирайте 🎥 и если будет 20+ я сделаю видео разбор преимуществ, благодаря которым я выбрал Koin, и недостатков, которые меня волнуют при росте проекта.
#DependencyInjection

Вышел 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
#DependencyInjection #Video #AndroidBroadcast

Почему Koin?

Android разработка строится вокруг определенных рекомендаций-правил и одним из таких является использование Dagger 2. Для себя я решил, что так нельзя и для Kotlin мы заслуживаем лучшего решения.

В видео я осветил почему перешел на Koin, свои впечатления и чего я боюсь в будущем от использования этой библиотеки для DI.

Хотите больше видео и качественнее? Поддержите проект на Boosty
#Dagger #DependencyInjection

Вышел Dagger 2.27

Новая версия популярного DI фреймворка привнесла следующий улучшения:
👉 Экспериментальный формат сообщений об ошибках (подробнее ниже)
👉 Более оптимальная генерация кода в зависимости от того как в класс происходит inject зависимостей
👉 Поддержка конструкторов с layout id из AndroidX
👉 Убрали использование Guava API, которое недоступно для использования в Android
👉 Улучшена работа с Kotlin
👉 Исправление багов

Экспериментальный формат сообщений об ошибках
Позволяет улучшить читабельность сообщений об ошибке. Этот формат в будущем станет стандартным.
При включение нового режима поменяется:
👉 Сокращенные имена всех классов
👉 Ошибки для каждого компонента отображаются как одна
👉 Добавление цветов к тэгам ошибок для визуального разделения ошибок
👉 Уменьшен объем информации в некоторых сообщениях

Для включения надо использовать -Adagger.experimentalDaggerErrorMessages=enabled
#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 🔥🔥🔥
#Dagger #DependencyInjection

Dagger dependencies beyond the basics

Dagger - очень популярное решения для организации DI в Android проектах. Одна печаль - инструмент мощный, но в нем легко запутаться, так как точных рекомендаций по использованию от авторов нет.

В статье разбирается как лучше доставлять зависимости с помощью Dagger в Android из всех возможных вариантов.
#DependencyInjection #ArchitectureComponents #ViewModel

Injecting ViewModel — hard to easy

В современной Android разработке очень популярна архитектура MVVM на основе Arch Components. И куда же современное приложение без Dependency Injection (DI).

Создание ViewModel и доставка зависимостей в ее конструктор с помощью DI - нетривиальная задача, так как создать ViewModel просто через конструктор неправильно, нужно делать это через ViewModelProvider.Factory.

В статье разбирается как решить эту задачу с помощью Dagger и Koin.
#Dagger #Hilt #DependencyInjection

Scoping in Android and Hilt

В Dagger мы привыкли работать с Subcomponent и делать разные Scope, для того чтобы управлять жизнью отдельных объектов графа. В Hilt нас ждут перемены работы с графом и это задело Scope тоже

В статье происходит разбор того как создать Scope для ViewModel при использовании Hilt
#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 #DependencyInjection

Вышел Dagger 2.29

Новая версия Dagger в которой появились
👉 артефакты Hilt для Android и чистых Java/Kotlin проектов
👉 Новая опция dagger.validateTransitiveComponentDependencies, которая отключает транзитивную проверку зависимостей компонентов
👉 Новая опция dagger.strictMultibindingValidation, позволяющая проверять multibinding в графе
👉 Исправление багов
#Koin #DependencyInjection

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
#DependencyInjection #SOLID #Architecture

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 стал поддерживать @BindValue val
👉 Dagger по умолчанию теперь использует experimentalDaggerErrorMessages. Подробности о новом формате вывода ошибок здесь
👉 Исправление багов
#DependencyInjection

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:
👉 @TestInstallIn - позволяет описывать глобально подмену тестовых модулей вместо @UninstallModules на отдельных тестах
👉 @HiltViewModel - замена @ViewModelInject. Отличается тем что делает inject из ViewModelComponent с @ViewModelScope. Подробнее здесь
👉 Удалили ApplicationComponent. Мигрируемся на SingletonComponent
👉 Небольшие улучшения в настройке Gradle плагина и поддержке многомодульных проектов