Kotlin Multiplatform
2.63K subscribers
84 photos
3 videos
407 links
Русскоязычный канал новостей о Kotlin Multiplatform
Download Telegram
Channel created
Делимся новостями, библиотеками, интересными кейсами по мобильной разработке с использованием kotlin multiplatform
Kotlin Multiplatform pinned «Делимся новостями, библиотеками, интересными кейсами по мобильной разработке с использованием kotlin multiplatform»
Первой новостью у нас будет очередной релиз кандидат библиотеки https://github.com/badoo/Reaktive
Интересно это в первую очередь тем, что это первая реализация Rx доступная в kotlin common коде, а ещё более интересно - в версии для kotlin/native поддерживается смена потоков. Один из разработчиков библиотеки рассказал детали в своем выступлении в Минске - https://youtu.be/2sxTUzG6HEA

#libs
1
А из интересных кейсов вчера поднялась в kotlinlang.slack.com интересная тема - как включить в градле обе айос архитектуры так, чтобы IDE не ломалась.
Напомню что решение согласно документации котлина - активировать только одну из архитектур (x64 по умолчанию, а если передана переменная окружения SDK_NAME с значением iphoneos - то arm64) из-за чего компиляция под устройство доступна только из xcode и нет управления полноценного зависимостями (ведь зависимости то под конкретную архитектуру скомпилированы).
Были озвучены пара интересных хаков:
1. Создать iosX64 таргет с именем ios (таким образом получаем сорссет iosMain), а так же обычные iosX64 и iosArm64 с указанием dependsOn iosMain. Говорят так получаем единый код и корректную работу IDE
2. Хранить код в iosMain директории, а для Gradle и IDE создать две симлинки iosX64Main и iosArm64Main после чего IDE корректно видит actual классы и Gradle предоставляет отдельные таски сборки айос версии, без лишних тасок как в первом случае.

Подробнее можно ознакомиться тут https://kotlinlang.slack.com/archives/C3SGXARS6/p1568297037167500

#cases
С прошедшего в прошлом месяце droidcon NYC рекомендую ознакомиться в первую очередь с докладом о эффективной мультиплатформенной архитектуре. Это не очередной доклад про MV* а хороший разбор как привести две платформы к общему коду - подготовиться сначала разбив на модули, после чего выбрать в каком порядке делать подключение второй платформе к общим модулям (разобрано сразу несколько вариантов). Все наглядно с картинками и кодом
https://speakerdeck.com/rharter/effective-multiplatform-architecture

#slides
Второй пост из серии "kotlin multiplatform in five minutes" рассказывает о концепции expect/actual. Для тех кто хоть раз уже использовал этот механизм ничего нового в статье нет, остальным же может быть полезен (в целом как и документация на kotlinlang)
https://touchlab.co/expect-actuals-statements-kotlin-multiplatform/

#posts
Продолжим "больную" тему многопоточности в kotlin/native. В прошлом посте я рассказал о библиотеке Reaktive от badoo, которая приносит Rx в общий код и переключение потоков в том числе.
Сегодня же хочется поделиться "народным" решением проблемы многопоточных корутин - https://github.com/Autodesk/coroutineworker
Данная библиотека позволяет выносить выполнение suspend функций на фоновый поток (либо запустить внутри suspend функции выполнение другого блока на фоновом потоке). Построена библиотека примерно так же как и Reaktive - лямбда, которая должна выполниться на фоновом потоке, автоматически замораживается, а с ней и все зависимости которые она имеет (поэтому очень важно не захватить случайно this или какой нибудь из объектов, иначе рассинхрон ThreadLocal копий объектов сломает логику приложения). Результат который выдается из лямбды тоже автоматически замораживается, поэтому модифицировать полученный объект сразу не получится - для модификации придется создавать копию.

#libs