На сайте KotlinConf'24 стали доступны записи докладов. На YouTube канале Kotlin их пока еще не открыли, но они доступны с сайта конференции по ссылкам
#kotlinconf24 #kotlin #compose #kmp #k2 #android #jetbrains #google #kotlinx
#kotlinconf24 #kotlin #compose #kmp #k2 #android #jetbrains #google #kotlinx
👍35❤1
Forwarded from Android Broadcast
Media is too big
VIEW IN TELEGRAM
Недавно библиотеки Jetpack Lifecycle обзавелись поддержкой KMP. Из видео вы больше узнаете о том
👉 как проходил этот процесс, каковы реальные проблемы
👉 связанные с поддержанием обратной совместимости API
👉 какие уроки извлекли из работы с ограничениями KMP команда
👉 что поможет вам перенести ваши собственные библиотеки на KMP
Это перезалив видео с официального канала Android Developers, чтобы ограничения YouTube не сказались на расширении знаний. Ставьте
#androiddev #google #kmp #jetpack #видео
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42👎5🔥4
🤯 Как Google делает Android-библиотеки мультиплатформенными 🚀
Разбирая исходники Navigation 3 я наткнулся на необычную папку в KMP-проекте — jvmStubsMain.
Внутри — только методы, которые либо возвращают значения по умолчанию, либо сразу выбрасывают исключения. Сборка под desktop из этого не получится, да и авторы такую цель не ставили. Возникает логичный вопрос: зачем тогда эта папка нужна? 🤔
🏝 Особенность KMP
В Kotlin Multiplatform папка commonMain содержит код, доступный всем таргетам.
Например:
👉 Если у проекта есть Android и iOS таргеты, в commonMain можно писать только чистый Kotlin + мультиплатформенные API.
👉 Но если оставить только Android-таргет, в commonMain внезапно станет доступен весь Android SDK 🤯 — что для меня было сюрпризом.
❗️ Зачем нужен jvmStub
Добавление таких stub-таргетов в Android-библиотеках помогает искусственно ограничить доступ к платформенным API в commonMain.
Почему это работает:
👉 У JVM и Android в KMP нет общего родителя в стандартной иерархии source sets (хотя платформы имеют много общего).
👉 Stub-реализации позволяют “отсечь” случайное попадание Android API в общий код.
👉 Это помогает держать код в commonMain чистым и переиспользуемым — вдруг завтра вы захотите добавить desktop или другую платформу.
💡 jvmStubsMain — это инструмент архитектурной дисциплины. Он не предназначен для полноценной JVM-сборки, но отлично помогает не тянуть Android-зависимости в общий код и сделать чистую арзитектуру
#kotlin #kmp #android #google
Разбирая исходники Navigation 3 я наткнулся на необычную папку в KMP-проекте — jvmStubsMain.
src
├── commonMain
├── androidMain
└── jvmStubsMain
Внутри — только методы, которые либо возвращают значения по умолчанию, либо сразу выбрасывают исключения. Сборка под desktop из этого не получится, да и авторы такую цель не ставили. Возникает логичный вопрос: зачем тогда эта папка нужна? 🤔
В Kotlin Multiplatform папка commonMain содержит код, доступный всем таргетам.
Например:
👉 Если у проекта есть Android и iOS таргеты, в commonMain можно писать только чистый Kotlin + мультиплатформенные API.
👉 Но если оставить только Android-таргет, в commonMain внезапно станет доступен весь Android SDK 🤯 — что для меня было сюрпризом.
Добавление таких stub-таргетов в Android-библиотеках помогает искусственно ограничить доступ к платформенным API в commonMain.
Почему это работает:
👉 У JVM и Android в KMP нет общего родителя в стандартной иерархии source sets (хотя платформы имеют много общего).
👉 Stub-реализации позволяют “отсечь” случайное попадание Android API в общий код.
👉 Это помогает держать код в commonMain чистым и переиспользуемым — вдруг завтра вы захотите добавить desktop или другую платформу.
💡 jvmStubsMain — это инструмент архитектурной дисциплины. Он не предназначен для полноценной JVM-сборки, но отлично помогает не тянуть Android-зависимости в общий код и сделать чистую арзитектуру
#kotlin #kmp #android #google
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍71