Записки разработчицы
1.89K subscribers
378 photos
24 videos
4 files
1.09K links
Разговоры об IT, о разработке. О мобилках нативных и кроссплатформенных.
Личный аккаунт @azharkova
Download Telegram
В этом году я плотно занималась не только SwiftUI, но и #kotlinmultiplatform. Наконец, у меня дошли руки доработать статью по созданию многопоточного приложения KMM, включив материал митапа MobiFest от 7.10
Если вам интересно не только, как реализовать многопоточное приложение для обеих платформ, но и почему общая работа с потоками организуется именно так, то welcome:
https://habr.com/ru/post/533864/
https://habr.com/ru/post/533952/
Если вкратце, то я показываю 2 способа, как можно организовать работу с потоками с учетом особенностей KMM и платформ:
1. Мы используем в общей логике библиотеки, которые внутри реализуют свою многопоточность. Вызываем их напрямую с наших платформенных проектов. Тут все ок. На iOS suspended красиво раскладываются на функции типа с completion handled: (Результат, Error) -> Void
На Android вызываем внутри mainScope

2. Делаем общую и архитектуру. Вызов библиотек перекладываем на посредника. Делаем ему его собственный scope на основе контекста корутины.
А для этого нам нужно задать свои диспетчеры корутин. И если под Android они уже есть (ибо Kotlin/JVM), то под Kotlin/Native их надо делать свои. + мы не можем использовать на iOS очередь из global queue, т.к они под Kotlin/Native ни к чему не привязаны.
В итоге мы делаем диспетчер на main queue. И если мы хотим использовать маршрутизацию в фон, то делаем свой фоновый scope. Не факт, что мы будем использовать только либы со своей многопоточностью же.

Также нам надо предусмотреть корректность передачи нашего диспетчера между потоками
В этот раз мои статьи попали в рубрику "Android".
Вообще в дайджест на этой неделе попало много интересных статей:
1. Apple дополнили свой сайт интересными туториалами и кодлабами по SwiftUI. То, что нужно, чтобы больше узнать про декларативную верстку
3. Статья, как сочетать работу с Coroutines и запросом пермишенов в Android приложении:
https://medium.com/better-programming/when-coroutines-meet-android-permissions-a1f048e70f74

4. Для любителей чего-нибудь эдакого статья по работе с GraphQL в Kotlin приложении . Для тех, кто делает все сам:
https://medium.com/swlh/graphql-kotlin-tutorial-344f5fe0c71a
Forwarded from Android Live 🤖
​​Jetpack Compose — Live coding сессия
#compose #youtube

Друзья, уже сегодня, 21 декабря в 18:30 мы с вами погрузимся в мир Jetpack Compose и создадим рабочее приложение.

По ходу сессии вы сможете задать вопросы нашему гостю Григорьеву Дмитрию, автору канала Jetpack Compose.

Напоминаю, что мы с вами рассмотрим:🔹
🔹как лучше строить архитектуру;
🔹как делать списки из разных типов view;
🔹что делать с навигацией между разными экранами;
🔹как сделать анимации;
🔹что делать с текущими приложениями;
🔹и много другое.

Ссылка на трансляцию тут.
Уже на KotlinBroadcast
#KMP #Multithreading

Kotlin Multiplatform. Работаем с многопоточностью на практике

Разбор применения Coroutine в мультиплатформенном проекте, причем чтобы все это работало во множестве потоков. Для iOS используется специальная версия библиотеки kotlinx-coroutines с постфиксом native-mt в версии, которая позволяет обойти текущие ограничения основной.
Завтра подключаемся к Mobius в 11 Мск)
24 декабря в 11:00 будем провожать 2020 год в эфире "Hello, world!" с Mobius.

Программный комитет Mobius подведет итоги года, ребята поделятся личными топами докладов и спикеров, побрейнштормят на тему того, что ждёт конференцию в будущем, и расскажут почти волшебные истории о том, как IT-конференции повлияли на их жизнь и карьеру.

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

Будет душевно, уютно и тепло. Дело за вами - подключайтесь.
https://youtu.be/Lv4JWyMKZTk
Время обновляться)
Forwarded from Kotlin Multiplatform (Алексей Михайлов)
Kotlin 1.4.30 Milestone 1 доступен для использования. Новая версия также совместима с библиотеками, скомпилированными на предыдущих версиях Kotlin 1.4.

Для KMM в новой версии грядет важное улучшение - значительное ускорение времени компиляции Kotlin/Native.

Мы провели у себя замеры на самом страдающем от времени сборки проекте:
- Kotlin 1.4.21 - 3m 55s total build time
- Kotlin 1.4.30-M1 - 2m 41s total build time

Условия теста:
- MacBook Pro 16 2019 (i9 2.4, 32Gb RAM)
- org.gradle.parallel=true
- org.gradle.jvmargs=-Xms512m -Xmx16g
- multimodule project (36 KMM gradle modules)
- чистая сборка (после clean)
- компиляция Debug iOS X64 framework

Но при тесте мы обнаружили 1 проблему с kotlinx.serialization.

#news
На MobiFest я мимоходом упомянула про кейс, когда мы реализуем бизнес-логику по-разному на разных платформах. Да, мы можем настроить использование разных сервисов с разными библиотеками под платформы, но тут теряется вся соль common code. В таком кейсе уже проще перейти на натив