#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
KMMBridge — это мощный Gradle-плагин для публикации Kotlin Multiplatform Xcode Framework в Swift Package Manager (SPM) и CocoaPods, что позволяет интегрировать мультиплфторменные решения быстрее и прозрачнее
Что нового в версии 1.1.0?
🛠 Сделан серьезный рефакторинг под капотом
🚀 Поддержка Gradle Configuration Cache, ускоряющая сборки.
👉 Модульная структура по фичам, упрощающая поддержку.
🔒 Упрощение публичного API, чтобы избежать случайного использования внутренних частей.
Для перехода на новую версию потребуется выполнить миграцию. Авторы подготовили подробное руководство.
#kmp #spm #cocoapods #gradle
Please open Telegram to view this post
VIEW IN TELEGRAM
Пример (EN,6м) использования Anvil расширений, но для Kotlin-Inject. Благодаря дополнениям работа с этим DI становится нормальной, потому что из коробки возможностей совсем не хватает
#kotlin #di
#kotlin #di
Вышел релиз-кандидат библиотеки kotlinx.serialization версии 1.8.0. Вот что нового:
👉 Аннотация @JsonIgnoreUnknownKeys позволит игнорировать неизвестные поля для отдельных классов
👉 SerialDescriptor и SerialKind теперь стабильные API
👉 Теперь генерируются реализации методов по умолчанию для Java 8 и выше
🛠 Исправлены баги и сделаные небольшие улучшения
#kotlinx #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
Для замеров скорости работы Kotlin кода на разных платформах используйте KotlinX Benchmark
Вам надо подключить Gradle плагин и затем провести настройка бенчмарка
Затем вы пишите тест подобный JVM Unit тесту
#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
Please open Telegram to view this post
VIEW IN TELEGRAM
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
Короткий разбор(EN,3м) как работает withContext() в Kotlin Coroutines и почему не стоит его активно использовать
#coroutines
#coroutines
Forwarded from Android Broadcast
В новом видео показываю как настроить публикации для Android и Kotlin Multiplatform библиотеки в Gradle с новым механизмом подписи артефактов для Maven Central в 2024
#AndroidBroadcast #видео #gradle #maven #kmp #android
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉 KAPT переезжает на K2 и теперь будет работать в этом режиме
#kotlin #kapt #gradle
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉 Вышла KotlinX Coroutines 1.10.1
Что нового:
👉 Kotlin 2.1.0
👉 Новые терминальные операторы Flow.any, Flow.all и Flow.none для проверок, аналогичных коллекциям. Будьте внимательные, что для бесконечных Flow вы можете не получить результата
👉 Сделали реорганизацию кода в
🛠 Исправление багов
Что нового:
👉 Kotlin 2.1.0
👉 Новые терминальные операторы Flow.any, Flow.all и Flow.none для проверок, аналогичных коллекциям. Будьте внимательные, что для бесконечных Flow вы можете не получить результата
👉 Сделали реорганизацию кода в
kotlinx-coroutines-debug
and kotlinx-coroutines-core
🛠 Исправление багов
Вышла Dokka 2.0 - инструмент для генерации API документации Kotlin кода.
Что нового:
👉 Обновленный Gradle плагин, работающий на Dokkatoo.
👉 Экспериментальная поддержка Kotlin K2
👉 Улучшения в генерируемом HTML
#kotlin #документация
Что нового:
👉 Обновленный Gradle плагин, работающий на Dokkatoo.
👉 Экспериментальная поддержка Kotlin K2
👉 Улучшения в генерируемом HTML
#kotlin #документация
MockK - библиотека мокиоования для Kotlin кода. Поддерживает корутины, Android, Spring и др. популярные технологии
Статья серии (EN):
#тестирование
Please open Telegram to view this post
VIEW IN TELEGRAM
В процессе дебага корутин вы могли столкнуться с тем что переменная "was optimized out", что является результатом оптимизиации state машины под капотом корутины.
Для того чтобы вся информация оставалась можно во время работы в IDEA включать debug режим работы Kotlin.
kotlin {
compilerOptions {
// Код запускается из IDEA/Android Studio
if (System.getProperty("idea.active") == "true"){
// Включаем режим дебага
freeCompilerArgs = listOf("-Xdebug")
}
}
}
#kotlin #idea #androidstudio #coroutines
Please open Telegram to view this post
VIEW IN TELEGRAM
KotlinX Coroutines уже давно обзавелись своим BOM-ом, подключайте
#kotlin #gradle #coroutines
dependencies {
implementation(platform(libs.kotlinx.coroutines.bom))
implementation(libs.kotlinx.coroutines.core)
}
#kotlin #gradle #coroutines
💉 Вышел официальный 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
Как проверять изменения API между версиями библиотеки (EN,9м)
В статье рассказывается как библиотека должна следить за изменениями API, чтобы была совместимость между версиями и упростить миграцию пользотвалям. Приводится пример использования утилиты Binary Compatibility Validator для автоматизации проверки API совместимости
#kotlin #инструменты #jvm
В статье рассказывается как библиотека должна следить за изменениями API, чтобы была совместимость между версиями и упростить миграцию пользотвалям. Приводится пример использования утилиты Binary Compatibility Validator для автоматизации проверки API совместимости
#kotlin #инструменты #jvm
Итоги 2024 года для 🏝 @kotlin_broadcast
Я и вся команда проекта уходит на новогодние каникулы. Увидимся с вами после праздников в 2025!
Я и вся команда проекта уходит на новогодние каникулы. Увидимся с вами после праздников в 2025!
Please open Telegram to view this post
VIEW IN TELEGRAM
Вышел KotlinX Serialization 1.8.0
👉 Аннотация @JsonIgnoreUnknownKeys - позволит игнорировать неизвестные ключи для отдельных классов, а раньше только можно было для всех классов
👉 Стабилизация SerialDescriptor API и @SealedSerializationApi
👉 Для Java 8 и выше теперь генерируются реализации методов по умолчанию в интерфейсах. Для совместимости работы с предыдущей версии сгенерированного кода добавьте опцию
🛠 Исправления и небольшие улучшения
#kotlin #kotlinx
👉 Аннотация @JsonIgnoreUnknownKeys - позволит игнорировать неизвестные ключи для отдельных классов, а раньше только можно было для всех классов
👉 Стабилизация SerialDescriptor API и @SealedSerializationApi
👉 Для Java 8 и выше теперь генерируются реализации методов по умолчанию в интерфейсах. Для совместимости работы с предыдущей версии сгенерированного кода добавьте опцию
all-compatibility
🛠 Исправления и небольшие улучшения
#kotlin #kotlinx