Kotlin Multiplatform Broadcast
9.71K subscribers
860 photos
54 videos
1.16K links
Новости и фичи Kotlin, а также Kotlin Multiplatform

YouTubе канал: https://youtube.com/androidBroadcast
Compose Multiplatform @compose_broadcast
iOS разработка @ios_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
Download Telegram
KSensor - KMP библиотека для работы с сенсорами на Android и iOS. Поддерживает акселерометр, гироскоп. магнитометр, барометр, счетчик шагов, местоположение

val sensors = listof(
SensorType.ACCELEROMETER,
SensorType.GYROSCOPE,
SensorType.MAGNETOMETER,
SensorType.BAROMETER,
SensorType.STEP_COUNTER,
SensorType.LOCATION,
)

// Register sensors
KSensor.registerSensors(
types = sensors,
locationIntervalMillis = {optional. default is 1000L},
onSensorData = { type, data ->
println("Sensor: $type - Data: $data")
},
onSensorError = { error ->
println("Sensor error: ${error.message}")
}
)

// Unregister sensors when no longer needed
KSensor.unregisterSensors(sensors)


#kotlin #kmp #android #ios
👍823
Media is too big
VIEW IN TELEGRAM
📹 История, принципы и концепции библиотеки навигации Decompose

Аркадий Иванов, автор библиотеки, рассказал историю ее создания и основные принципы и решения, которые выделяют Decompose: максимальная гибкость для соответствия практически любому проекту, отличная масштабируемость на средних и больших проектах, типобезопасность, настолько надежная, что если ваш код компилируется, то, скорее всего, он работает, и, конечно же, тестируемость.

Также из доклада вы узнаете об основных API библиотеки, и поймете, как и почему так просто создавать свои собственные модели навигации. Вы узнаете не только «как», но и «почему».

Независимо от того, работаете ли вы над приложениями для миллионов пользователей или только начинаете с нуля, этот доклад бросит вызов тому, как вы думаете об архитектуре.

#kmp #архитектура #kotlin #mobius
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3910🎉5
This media is not supported in your browser
VIEW IN TELEGRAM
🐱 LensLogger - KMP опенсорс библиотека для Android, iOS и Desktop чтобы отслеживать сетевые запросы через Ktor клиент и изучать их прямо из вашего приложения.

Подключаете зависимости и делается инициализацию
val client = HttpClient(engine) {
// body
install(LensHttpLogger){
level = LogLevel.ALL
}
}


#kotlin #kmp #ktor
Please open Telegram to view this post
VIEW IN TELEGRAM
44👍16🔥7
🚀 В Jetpack Paging 3.4.0-alpha01 добавили поддержку новых таргетов: watchos, tvos, mingwX64, watchosDeviceArm64 и linuxArm64

Библиотека для пагинации от Google уже давно обзавелась поддержкой iOS и Desktop, а вот в будущей версии и закроются остальный части, кроме JS и WASM.

#android #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍244
Forwarded from Android Broadcast
🤖 Jetpack Lifecycle теперь поддерживает все KMP тартеты

В версии Jetpack Lifecycle 2.9.2 добавили поддержку WasmJS тартега, а это значит что библиотека теперь может работать на всех KMP таргетах: JVM (Android, Desktop), Native (Linux, iOS, watchOS, macOS, MinGW) и Web (JavaScript, WasmJS)

#android #kmp @wasmjs #jetpackupdate
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥39👍19
🏝 Kombinator - open source библиотека для генерации экземпляров Kotlin объектов со всеми возможными комбинациями значений из заданных.

Библиотека работает на основе генерации кода через KSP. Может быть полезна для тестов, чтобы проверять разные входные данные.

// Уровень класса @Kombine: Задает значения по умолчанию для свойств
// без аннотаций и без дефолтных значений property
@Kombine(
allPossibleIntParams = [100],
allPossibleStringParams = ["system"],
)
data class ScreenConfig(
// Аннотация на уровне свойства переопределяет уровень класса для 'theme'
@Kombine(allPossibleStringParams = ["light", "dark", "auto"])
val theme: String,

// Есть значение по умолчанию, Kombinator будет использовать ТОЛЬКО "portrait"
val orientation: String = "portrait",

// Нет аннотации @Kombine и значения по умолчанию.
// Будет использовать значение уровня класса: [100]
val padding: Int,

// Аннотация на уровне свойства переопределяет уровень класса для 'fontSize'
@Kombine(allPossibleIntParams = [12, 16, 20])
val fontSize: Int,

// Нет аннотации @Kombine и значения по умолчанию.
// Будет использовать значение уровня класса: ["system"]
val fontFamily: String,
)

#kotlin #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🏆2
🏝 Вышел Coil 3.3.0 - загрузчик картинок с поддержкой KMP

Что нового:
👉 Добавили новые API для задания ограничения потребления памяти, когда приложение в фоне
👉 SvgDecoder может работать со сторонними парсерами SVG
👉 Много минорных улучшений API
👉 Обновлени зависимостей

#kotlin #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍8
🏝🦢 Kotlin-to-Swift экспорт теперь работает по умолчанию [EXPERIMENTAL]

Kotlin-to-Swift экспорт позволяет удобно использовать скомпилированный для Apple таргетов код из Swift удобным образом. Изменение добавили в Kotlin 2.2.20-Beta2

Ключевые фичи:
👉 Поддержка многомодульности: каждый Kotlin модуль - отдельный Swift модуль
👉 Поддержка пакетов в коде
👉 type alias теперь доступны из Swift
👉 Улучшения в nullability с примитивными типами
👉 Вызов перегруженных функций в Kotlin из Swift кода
👉 Можно изменить имя модуля

Фича всё ещё в экспериментальном режиме и для её включения надо выполнить ряд действий (подобно как раньше в XCode проект подключался KMP модуль)

#kotlin #swift #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30🔥11🤔1
🏝 В Kotlin 2.2.20 упростили объявление common зависимостей KMP проекта

Теперь общие зависимости (common) можно объявить в dependencies блоке в kotlin {}
kotlin {
@OptIn(ExperimentalKotlinGradlePluginApi::class)
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2")
}
}

#kotlin #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
17🔥7🎉3👍1
В Kotlin Multiplatform проекте теперь можно шарить код между JS и wasmJs таргетами через общий source set - WEB.

Изменение доступно в Kotlin 2.2.20-Beta2

#kotlin #kmp
🔥167👍2
🏝 Kotlin 2.2.20-Beta2: кроссплатформенная компиляция без Mac* 🤯 [STABLE]

В новой бете Kotlin 2.2.20 стабилизирована кроссплатформенная компиляция .klib-артефактов. Теперь публиковать Kotlin-библиотеки можно с любой хост-машины, что значительно упрощает процесс, особенно для Apple-таргетов.

Mac всё ещё потребуется, если проект использует cinterop, CocoaPods или нужно собрать финальные бинарники для Apple. Подробности — в документации.

Если в gradle.properties добавляли kotlin.native.enableKlibsCrossCompilation=true, то теперь можно убрать

#kotlin #kmp #klib #native
Please open Telegram to view this post
VIEW IN TELEGRAM
🏆23👍63🤔1