Нашел Cheat Sheet от Kotzilla и инструкцию по миграции с Dagger/Hilt. на Koin (можно использовать в KMP проектах)
Чтобы вам не регаться я нашел прямую ссылку
#koin #hilt #android #di
Чтобы вам не регаться я нашел прямую ссылку
#koin #hilt #android #di
👍32👎3👏3
Forwarded from Android Broadcast
Media is too big
VIEW IN TELEGRAM
Я использую Koin еще с самой первой версии, он неплохо справляется с небольшими проектами, но дальше требует работы как самурай. В видео для патронов рассказываю, что не так с Koin, как этого избегаю и какой DI нужен для KMP.
Видео доступно на Boosty и по подписке в Telegram.
#AndroidBroadcast #koin #di #kmp #android
Please open Telegram to view this post
VIEW IN TELEGRAM
👎58👍24🔥3🤔1
Помните про kotlin-inject ? Это DI для KMP аналогичный Dagger с проверкой графа во время компиляции, так вот для него сделали Anvil подобные расширения 😂 - kotlin-inject-anvil.
Вот почему сразу нельзя сделать из коробки оригинальной библиотеки всё ? Тем более она даже не вышла в версию в 1.0, а из моего опыта с ней ей реально нужны API улучшения
#di #kmp #ksp
Вот почему сразу нельзя сделать из коробки оригинальной библиотеки всё ? Тем более она даже не вышла в версию в 1.0, а из моего опыта с ней ей реально нужны API улучшения
#di #kmp #ksp
👎16👍7
"Koin: как сделать свой DI за 10 минут" - очень полезная статья с разбором того как сделать Koin подобный DI самостоятельно, что позволит понять как работает популярное решение
#di #koin #подкапотом
#di #koin #подкапотом
🔥24👍5
Уже на протяжении нескольких недель с перерывами пытаюсь завести Kotlin Inject вместо Koin. Использовать решение с KMP в многомодульном проекте совсем не получается. В чем причина так и не могу разобраться. Может в KSP, может в самом процессоре библиотеки, но любые попытки я пока оставляю. Если у кого-то это уже получалось - пишите в комментариях.
Исходный код моей попытки можно посмотреть тут
#kmp #di
Исходный код моей попытки можно посмотреть тут
#kmp #di
❤8👍6
Вышел Koin Annotations 1.4.0 Stable
👉 Создание модулей на старте
👉 Поддержка WASM
👉 Поддержка Qualifier
👉 Поддержка object модулей
👉 Сканирование множества модулей для поиска объявление зависимостей
👉 Обновили документацию для KMP
👉 Улучшили валидацию объявлений во время компиляции
👉 Рефакторинг кодогенерации для KMP проектов для решения багов и улучшения скорости работы
#koin #di #wasm
👉 Создание модулей на старте
👉 Поддержка WASM
👉 Поддержка Qualifier
👉 Поддержка object модулей
👉 Сканирование множества модулей для поиска объявление зависимостей
👉 Обновили документацию для KMP
👉 Улучшили валидацию объявлений во время компиляции
👉 Рефакторинг кодогенерации для KMP проектов для решения багов и улучшения скорости работы
#koin #di #wasm
🔥18👍9
Решение подобное Anvil для Dagger. Самое интересное - kotlin-inject-anvil уже есть 😁
#di
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤4
В рекомендациях пишут, что надо делать Inject диспатчеров, но не описывают как это сделать. Я реализую это с помощью собственного класса со всеми CoroutineDispatcher вместо того чтобы использовать квалификаторы для зависимостей в графе, например @Named()
#coroutines #di
#coroutines #di
👍37🎉1
Альтернативный вариант как делать inject CoroutineDispatcher в Dagger без дополнительного класса
#coroutines #di
#coroutines #di
👍58
Пример (EN,6м) использования Anvil расширений, но для Kotlin-Inject. Благодаря дополнениям работа с этим DI становится нормальной, потому что из коробки возможностей совсем не хватает
#kotlin #di
#kotlin #di
👍6❤2
💉 Вышел официальный Koin плагин для Idea/Android Studio
Выпустили раннюю версию плагина Koin для Idea и Android Studio, чтобы решить проблемы с отсутствием проверки графа во время валидации и улучшения опыта работы с библиотекой.
В текущей версии доступен просмотр дерева конфигурации Koin, включающий модули, компоненты и зависимости. Также есть навигация между компонентами и зависимостями, что избавляет от поиска по кодовой базе.
Пока нет поддержки разделения на модули, граф строится один на всё. В будущем уже будет множество фичей. Авторы считают, что проверка графа в IDE лучше, чем только во время компиляции, и обеспечит анализ использования Koin в реальном времени.
На текущий момент доступ к плагину можно получить только через оформление заявки (я доступ получил и буду рассказывать детали).
#koin #di #androidstudio #idea
Выпустили раннюю версию плагина Koin для Idea и Android Studio, чтобы решить проблемы с отсутствием проверки графа во время валидации и улучшения опыта работы с библиотекой.
В текущей версии доступен просмотр дерева конфигурации Koin, включающий модули, компоненты и зависимости. Также есть навигация между компонентами и зависимостями, что избавляет от поиска по кодовой базе.
Пока нет поддержки разделения на модули, граф строится один на всё. В будущем уже будет множество фичей. Авторы считают, что проверка графа в IDE лучше, чем только во время компиляции, и обеспечит анализ использования Koin в реальном времени.
На текущий момент доступ к плагину можно получить только через оформление заявки (я доступ получил и буду рассказывать детали).
#koin #di #androidstudio #idea
👍49🔥11
В статье представлен отчёт о текущем прогрессе и планах на ближайшие релизы (4.1 и 4.2):
👉 KMP API: появится
KoinMultiplatformApplication
, который упростит настройку библиотеки из common кода для всех платформ.@Composable
fun App() {
KoinMultiplatformApplication(config = koinConfig) {
// ...
}
}
👉 В Composable функциях станет проще инжектировать динамические параметры:
fun MyComposable(
myFactory: MyFactory = koinInject(parameters = parametersOf("first_string"))
)
👉 Koin начнёт отслеживать, что именно он инжектирует в Composable функции, и будет очищать экземпляры после выхода из функции.
👉 Появятся Scope Archetype — шаблоны для управления зависимостями с scope. Это должно упростить работу. Выглядит похоже на Scope в Hilt: activityScope и другие.
👉 Идёт переработка DSL для описания зависимостей. Новый проект получил название koin-fu. Также появится плагин компилятора Kotlin для лучшего анализа метаданных и конфигурации графа зависимостей. Это упростит жизнь разработчикам.
👉 Koin Annotations 2.1: будет поддержка аннотаций @Inject и @Component из JSR 330. Это шаг в сторону функциональности Dagger и Hilt. 🤯
👉 Добавится поддержка Ktor 3.
Версия статьи без VPN: ссылка. (Ставьте 🔥, если стоит добавлять такие ссылки.)
#kmp #kotlin #di #koin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥78❤3🎉3👍2
Koin Annotations — надстройка над Koin для описания зависимостей с помощью аннотаций и последующей генерации части графа для них.
Что нового в движке:
👉 Совместимость с KSP2
👉 Улучшена работа компилятора DI кода
👉 Улучшена генерация кода
👉 Полноценная поддержка KMP проектов
👉 Шаринг описаний зависимостей между модулями проектов
👉 Работает с Koin 4.0, Kotlin 2.0.21 и KSP 2.0.21-1.0.28
Новые фичи для разработчиков:
👉 Создание собственных аннотаций квалификаторов
👉 Автоматические биндинги
👉 ComponentScan работает сквозь Gradle модули
👉 Аннотации над ViewModel (работает с Jetpack и KMP)
@KoinViewModel
class MyViewModel(deps: Deps): ViewModel()
Ссылка без VPN
#kotlin #kmp #di #koin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍6
#kotlin #di #koin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Metro - Новый DI фреймворк на чистом Kotlin (ещё в разработке)
#kotlin #di #ksp
@DependencyGraph
interface AppGraph {
val httpClient: HttpClient
@Provides
private fun provideFileSystem(): FileSystem = FileSystem.SYSTEM
}
@Inject
class HttpClient(private val fileSystem: FileSystem)
@Inject
@Composable
fun App(circuit: Circuit)
#kotlin #di #ksp
👍35
Что нового:
👉 Упростили конфигурацию
👉 Улучшили работу со Scope. Дообавили архитипы для Scope
👉 ViewModel Scope интегрировали с механизмом ViewModel auto closable
👉 Появилась возможность проверки конфигурации через через тесты
👉 Поддержка Compose 1.8 и Lifecycle 2.9
👉 Поддеркжа Ktor 3.2
🔗 Альтернативная ссылка
#kotlin #di
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31❤2👍2🤔2