Kotlin Multiplatform
2.62K subscribers
84 photos
3 videos
407 links
Русскоязычный канал новостей о Kotlin Multiplatform
Download Telegram
Завершение цикла постов о KotlinConf:

Going Native - опыт разработки мультиплатформенного игрового приложения.

В выступлении:
- Демо самой игры;
- Что ушло в общий код;
- Архитектура с множеством математических игр на двух платформах;
- Сравнение API между платформами;
- Рисование через общий код;
- Примеры утечек памяти;
- Особенности на стыке Kotlin и Swift (синглтоны, списки).

Sharing is caring - intro to kotlin multiplatform - погружение в мультиплатформу. В целом ничего нового и выделяющегося в выступлении не было.

"Share only what you want when you want" - хорошее выражение силы kotlin multiplatform.

И из последних новостей:
Вышла новая версия Kotlinx.coroutines 1.3.3 с обновлением kotlin до 1.3.61, рядом багфиксов, поддержкой watchOS, tvOS. В новом релизе пока нет поддержки многопоточности для Native (все еще в разработке).

#videos #libs
Kotlin Multiplatform iOS frameworks dependencies - описание как подключить нативный iOS framework в Kotlin/Native.

Разобрано подключение FirebaseML Vision, с использованием cocoapods плагина и cinterop (из-за subspec'ов).

В простых случаях достаточно cocoapods-gradle plugin (раздел Interop в документации Kotlin/Native).

Для тех кому интересна тема подключения нативных библиотек в Kotlin/Native есть пример FirestoreKMP.

#posts #libs
Forwarded from Egor Tolstoy
Всем привет! Мы стартанули новое исследование, в этот раз – про то, насколько понятны различные аспекты работы с мемори моделью в Kotlin/Native. В опросе – 10 сниппетов кода, для каждого из которых нужно ответить на два вопроса – согласны ли вы с результатом выполнения кода и понимаете ли, почему он работает именно так. Мы ждем ответов и от опытных пользователей, и от новичков.
Ваше участие сильно поможет нам в понимании текущих проблем и поиске решений для них.
https://surveys.jetbrains.com/s3/kotlin-native-memory-model-research
Насколько Kotlin Multiplatform готов для эффективной разработки мобильных приложений - выступление с митапа Leroy Merlin. Спикер из Kaspersky Lab рассказал:
* Как шарят код между платформами в Kaspersky;
* Основы Kotlin Multiplatform;
* Немного болей Kotlin/Native;
* Свою историю реализации фуллстек kotlin multiplatform приложения;
* Стоимость перехода на Kotlin Multiplatform;
* Сравнение с Flutter.

#videos
А еще в нашем чатике @kotlinmppchats ребята из JetBrains ждут ваш фидбек по проблемам отладки в kotlin multiplatform
Forwarded from Liliia Abdulina
Всем привет! И снова команда mobile multiplatform на связи, и снова нужна ваша помощь :)

На этот раз дебаг, сейчас я составляю базовые сценарии его использования. Скажите, пожалуйста, когда/для чего вы чаще всего запускаете дебаггер? Тесты, юай, упоротый алгоритм, шальная переменная, что-то иное? Какие из функций дебаггера (степпинг, evaluate, etc.) — ваши любимые и заставляют особенно грустить, если они не работают? Что, на ваш взгляд, ну точно должно работать в дебаггере?

Отвечать можно на все вопросы, на какой-либо из заданных или на тот, что не прозвучал, но важен для debug experience :)
Powering Worldwide Learning with Kotlin Multiplatform - выступление о внедрении Kotlin Multiplatform в Quizlet (статья с их историей уже была в канале). Перевели сложную бизнес-логику в общий код сначала на JS, а потом на Kotlin Multiplatform (с шарингом на android, ios, web).

Practical Kotlin Native Concurrency Part 3 - новая часть разбора многопоточности в Kotlin/Native от Touchlab.

Разобрано актуальное состояние - превью многопоточных coroutines, библиотеки coroutineWorker и reaktive. На примерах показано как библиотеки решают вопрос многопоточности, когда происходит заморозка объектов и какие последствия заморозки можно встретить.
А так же разобраны Atomc'и.

#videos #posts
Kotlin Multiplatform in 2020 - обзорная статья про Kotlin Multiplatform и чего можно ожидать в 2020 году.

Braincup - игровое приложение для тренировки памяти и навыков по математике, фокусировке, сделано с общим кодом и реализует UI на Jetpack Compose, SwiftUI.

PeopleInSpace - небольшой проект пример с общим кодом на Kotlin Multiplatform и реализацией UI на Jetpack Compose и SwiftUI.

KInsight Alpha Capture - пример проекта с множеством платформ - iOS, MacOS, WatchOS (SwiftUI), Android (phone and Wear OS), JVM Web Server.

moko-geo - библиотека предсотавляющая доступ к трекингу геолокации из общего кода.

#posts #libs #samples
Building an iOS Fat Framework for a Kotlin Multiplatform Project - статья поможет настроить сборку iOS framework с архитектурами arm64 и x64, что позволит дальше распространять framework как готовую библиотеку через CocoaPods / Carthage. Может быть полезно тем, у кого не монореп и iOS часть собирается независимо от общего кода.

#posts
Всем привет в новом году. Праздники кончились и канал возвращается к своему обычному расписанию.

Начем год с статьи Maximizing Code Sharing between Android and iOS with Kotlin Multiplatform - она может быть интересна не только новичкам в kotlin multiplatform.

В статье есть:
- Краткий разбор что такое kotlin multiplatform и как он работает;
- Примеры что может находиться в общем коде, а что на платформах останется;
- Как настроить проект с нуля (с корректным переносом android ресурсов и манифеста в androidMain);
- Пример реализации сетевого запроса (как обычно ktor-client + serialization);
- Пример реализации ViewModel с использованием AndroidArchitectureComponents на android (как в moko-mvvm);
- Пример проброса на iOS-swift сторону Flow (обход стирания suspend функций при компиляции в iOS framework);
- Настройка CocoaPods интеграции с iOS проектом;
- Набор ссылок на другие полезные ресурсы (все они уже были упомянуты в канале).

#posts
Summer - kotlin multiplatform библиотека, предоставляющая компоненты для построения приложения с MVP подходом.

В библиотеке есть следующие компоненты:
- View
- Presenter
- UseCase
- Router

View является составной - это два интерфейса, один это State и другой - Methods.

Сразу предоставляются IDE шаблоны для быстрого создания основы.

#libs
Kotlin Multiplatform — MVVM & Clean Architecture - статья-пример реализации мобильных приложений по подходам MVVM и чистой архитектуры.
В примере использовались библиотеки kodein (для внедрения зависимостей), ktor-client, serialization, coroutines, moko-mvvm

И дополнение к предыдущему посту про библиотеку Summer, от автора библиотеки:
iOS часть в процессе тестирования на реальном проекте и возможны небольшие изменения АПИ библиотеки. А так же на момент публикации не было ссылок на плагин и базовые классы для iOS, но сейчас они уже указаны в readme.

#posts #libs
Using Gradle Metadata for a Kotlin multiplatform project - статья описывающая как Gradle Metadata позволяет упростить работу с зависимостями multiplatform проектов.

Детальнее про управление зависимостями можно прочитать в документации, а так же послушать в выступлении Ильи Матвеева - Мультиплатформенные проекты и Gradle.

Если интересно как устроены метаданные в деталях - можно ознакомиться на сайте gradle.

#posts #videos
Kotlin Multiplatform Android/iOS: Testing - статья о написании тестов на общий код.

На примере тестирования класса репозитория разобрано как можно создавать mock в общем коде, тестировать coroutines и проверять результат асинхронной операции без coroutine.

#posts
Разбиение приложения на отдельные модули – типовая задача разработки. И разработка на kotlin multiplatform не исключение.

В статье Building an App with Kotlin Multiplatform: Structuring our app разобран кейс разделения приложения на модули, с учетом имеющихся ограничений. Описанное приложение доступно на github.

Так же для разработки многомодульного приложения можете использовать moko-template (шаблон с заложенной многомодульностью).

#posts
В Twitter запущен тред по сбору информации о использовании Kotlin Multiplatform в мобильной разработке. Можете присоединиться и рассказать о своем приложении, а так же можно прочитать о том что у других.

Выборка:
- Tpaga - платежное приложение, использует KMP, пока доступно только на android;
- WalpyApp - коллекция wallpapers, использует KMP, пока доступно только на android;
- Commit 2019 - приложение для конференции, использует KMP, доступно на android и ios, opensource;
- Eneco - приложение контроля и оплаты энергии, использует KMP, доступно на android и ios;
- Clue - приложение для женщин, использует KMP, доступно на android и ios.

И помимо выбранных есть еще ряд кейсов использования KMP для шаринга кода, в пока не опубликованных проектах либо приватных. Рекомендую почитать тред самим и, если есть чем поделиться, сообщить свой кейс.

#posts
Forwarded from Anastasiia Zakharova
Используете ли вы флаг -Xobjc-generics в своих проектах?
Anonymous Poll
37%
Использую
63%
Не использую
JetBrains проводит опрос про Kotlin - https://surveys.jetbrains.com/s3/e6-kotlin-census-2019
Kevin Galligan продолжает радовать своими материалами по работе с многопоточностью в Kotlin/Native. Статья Kapture - Kotlin/Native State Capture описывает плагин для IDE, который подскажет места где будет нежелательная заморозка объектов (freeze).

Когда данный плагин будет публично доступен он упростит работу многим. А на данный момент можно записаться на закрытый тест.

#posts #ide
Новые материалы по работе с памятью в Kotlin/Native. Сразу две статьи:
Kotlin/Native - Transferring State
Kotlin/Native - Isolated State

Обе статьи на примерах показывают подходы к работе с изменяемым состоянием в многопоточной среде.
Разобран механизм DetachedObjectGraph и представлены возможности нового релиза библиотеки Stately в той же задаче. Сравнение сделано по производительности.

#posts #libs