Kotlin Multiplatform Broadcast
9.47K subscribers
835 photos
53 videos
1.13K links
Новости и фичи Kotlin, а также Kotlin Multiplatform

YouTubе канал: https://youtube.com/androidBroadcast
Compose Multiplatform @compose_broadcast
iOS разработка @ios_broadcast
Новости Android @android_broadcast
Реклама и прочее @android_broadcast_bot
Download Telegram
В Kotlin 2.1 when будет лучше работать в when, когда используется Generic тип, ограниченный сверху sealed классом/интерфейсом

#kotlin
🔥501👍1
🏝 Swift Export в Kotlin 2.1

Еще на KotlinConf 2024 сделали анонс экспорта Kotlin кода в Swift, что обеспечить удобную работу при подключении KMP библиотеки в современные iOS проекты. В Kotlin 2.1.0 можно попробовать первые результаты. Пока только базовая поддержка.

Проект с примером настройки от JetBrains на 🐱 GitHub

Чтобы включить Swift Export надо добавить в gradle.properties флаг:
# gradle.properties
kotlin.experimental.swift-export.enabled=true


#kotlin #swift
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👍61
В официальной документации по Kotlin Multiplatform появился раздел по интеграции с iOS. Описываются как подходы локальные, так и через SPM и CocoaPods

Теперь подключение iOS в KMP проект перестало быть магией. До этого приходилось потратить прилично времени на разбор

#ios #kmp #spm #swift #документация
🔥471
Media is too big
VIEW IN TELEGRAM
📹 В стандартной библиотеки Kotlin 2.1 добавили KMP версию UUID (экспериментальное API). В видео больше подробностей

UUID (Universally Unique Identifier) - это универсальный уникальный идентификатор, используемый для уникальной идентификации объектов в распределённых системах. UUID широко применяется в программировании, базах данных, сетевых приложениях и других областях, где требуется обеспечить уникальность идентификатора. UUID имеет длину 128 бит (16 байт)

#kmp #stdlib
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥35👍12
JetBrains проводит опрос опыта работы с Kotlin Multiplatform. Займёт 10 минут вашего времени и принесёт пользу для развития технологии

#kmp #опрос
👍28
🏝 Вышел KtLint 1.5.0 с поддержкой Kotlin 2.1 и сделаны небольшие улучшения и исправления багов

#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20
🏝🦢🐘 Вышел KMMBridge 1.1.0!

KMMBridge — это мощный Gradle-плагин для публикации Kotlin Multiplatform Xcode Framework в Swift Package Manager (SPM) и CocoaPods, что позволяет интегрировать мультиплфторменные решения быстрее и прозрачнее

Что нового в версии 1.1.0?
🛠 Сделан серьезный рефакторинг под капотом
🚀 Поддержка Gradle Configuration Cache, ускоряющая сборки.
👉 Модульная структура по фичам, упрощающая поддержку.
🔒 Упрощение публичного API, чтобы избежать случайного использования внутренних частей.
🦢 Указание отдельного репозитория для публикации в SPM, повышая гибкость настройки.

Для перехода на новую версию потребуется выполнить миграцию. Авторы подготовили подробное руководство.

#kmp #spm #cocoapods #gradle
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
Пример (EN,5м) использования изолированного экземпляра Koin. Будет полезно для авторов библиотек или если в своём приложении вы хотите отделить несколько графов.

#koin #di
👍18🎉3
Пример (EN,6м) использования Anvil расширений, но для Kotlin-Inject. Благодаря дополнениям работа с этим DI становится нормальной, потому что из коробки возможностей совсем не хватает

#kotlin #di
👍62
🏝 Показали RC Kotlinx Serialization 1.8.0!

Вышел релиз-кандидат библиотеки kotlinx.serialization версии 1.8.0. Вот что нового:
👉 Аннотация @JsonIgnoreUnknownKeys позволит игнорировать неизвестные поля для отдельных классов
👉 SerialDescriptor и SerialKind теперь стабильные API
👉 Теперь генерируются реализации методов по умолчанию для Java 8 и выше
🛠 Исправлены баги и сделаные небольшие улучшения

#kotlinx #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉38👍21
Для замеров скорости работы Kotlin кода на разных платформах используйте KotlinX Benchmark

Вам надо подключить Gradle плагин и затем провести настройка бенчмарка
// build.gradle.kts
benchmark {
targets {
register("js")
register("linuxX64")
}

configurations {
named("main") {
warmups = 20
iterations = 10
iterationTime = 3
iterationTimeUnit = "s"
}

register("smoke") {
include("<pattern of fully qualified name>")
warmups = 5
iterations = 3
iterationTime = 500
iterationTimeUnit = "ms"
}
}
}


Затем вы пишите тест подобный JVM Unit тесту

@State(Scope.Benchmark)
class MyBenchmark {
private val size = 10
private val list = ArrayList<Int>()

@Setup
fun prepare() {
for (i in 0..<size) list += i
}

@TearDown
fun cleanup() { list.clear() }

@Benchmark
fun benchmarkMethod(): Int = list.sum()
}


#benchmark
👍416
This media is not supported in your browser
VIEW IN TELEGRAM
🏝 klibs.io - портал для поиска KMP библиотек от JetBrains

JetBrains анонсировала альфа версию портала klibs.io для простого поиска KMP библиотек.

Если хотите добавить свою библиотеку на портал, то инструкция тут

#kmp #compose #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥443👍2
🏝 Появилась возможность дебажить SPM сборки KMP библиотек

Touchlab обновила SKIE и KMMBridge для поддержки дебага SPM билдов, используя Xcode Kotlin плагин, без необходимости компиляции или конфигурации KMP зависимостей 🤯

Нужно использовать KMMBridge 1.2.0. Работает всё на основе публикация исходного Kotlin кода в SPM

#kotlin #kmp #xcode #spm #touchlab #skie
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉13👍42
Короткий разбор(EN,3м) как работает withContext() в Kotlin Coroutines и почему не стоит его активно использовать

#coroutines
3👍19
Forwarded from Android Broadcast
📹 Демонстрация настройки публикации Android и KMP библиотеки (36 минут)

В новом видео показываю как настроить публикации для Android и Kotlin Multiplatform библиотеки в Gradle с новым механизмом подписи артефактов для Maven Central в 2024

#AndroidBroadcast #видео #gradle #maven #kmp #android
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍4
🏝 Вышла первая Beta Kotlin 2.1.20

🎉 KAPT переезжает на K2 и теперь будет работать в этом режиме
🐘 Поддержка Gradle 8.11

#kotlin #kapt #gradle
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉29👍6
🎉 Вышла KotlinX Coroutines 1.10.1

Что нового:
👉 Kotlin 2.1.0
👉 Новые терминальные операторы Flow.any, Flow.all и Flow.none для проверок, аналогичных коллекциям. Будьте внимательные, что для бесконечных Flow вы можете не получить результата
👉 Сделали реорганизацию кода в kotlinx-coroutines-debug and kotlinx-coroutines-core
🛠 Исправление багов
🎉33👍9
Вышла Dokka 2.0 - инструмент для генерации API документации Kotlin кода.

Что нового:
👉 Обновленный Gradle плагин, работающий на Dokkatoo.
👉 Экспериментальная поддержка Kotlin K2
👉 Улучшения в генерируемом HTML

#kotlin #документация
🔥28👍1
🏝 Серия статей про использование MockK

MockK - библиотека мокиоования для Kotlin кода. Поддерживает корутины, Android, Spring и др. популярные технологии

Статья серии (EN):
1️⃣ Основы MockK
2️⃣ Углубленные приемы мокирования
3️⃣ Использование с Android компонентами
4️⃣ Работа с Coroutine и Flow
5️⃣ Как писать читаемый и поддерживаемый код с MockK

#тестирование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
🏝 Руководство по настройке дебага корутин (EN, 3м)

В процессе дебага корутин вы могли столкнуться с тем что переменная "was optimized out", что является результатом оптимизиации state машины под капотом корутины.

Для того чтобы вся информация оставалась можно во время работы в IDEA включать debug режим работы Kotlin.

kotlin {
compilerOptions {
// Код запускается из IDEA/Android Studio
if (System.getProperty("idea.active") == "true"){
// Включаем режим дебага
freeCompilerArgs = listOf("-Xdebug")
}
}
}


❗️ Важно. Флаг влияет на работу Kotlin кода и вам не надо добавлять его во все дебажные сборки. Используйте только при работе из IDE или других ограниченных сценариях.

#kotlin #idea #androidstudio #coroutines
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥12