Kotlin Multiplatform
2.62K subscribers
84 photos
3 videos
407 links
Русскоязычный канал новостей о Kotlin Multiplatform
Download Telegram
Touchlab выпустили библиотеку CrashKiOS, улучшающую информацию о крешах на iOS.

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

Почитать детальнее можно в посте - Kotlin Native iOS Crash Reporting.

А еще в Kotlin 1.3.60 была улучшена поддержка отладочных символов и можно dSYM для релизных билдов получать, чтобы загрузить в fabric/appstore/еще куда-либо.

#libs #posts
Kotlin Multiplatform in action: more than 10 projects for iOS and Android with shared code - наше (IceRock) выступление.

В выступлении:
- Как вводили MPP в работу;
- Как масштабировали на всю компанию (хронологически);
- Что вынесли в опенсорс из внутренних разработок компании (moko библиотеки);
- Показали moko-widgets в работе, на нескольких примерах. Библиотека позволяет построить все приложение из общего кода (сейчас тестируется внедрением в боевой проект).

Так же есть запись live-coding'а с использованием moko-widgets на примере более старой версии библиотеки.

#videos #libs
Завершение цикла постов о 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
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
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
Новые материалы по работе с памятью в Kotlin/Native. Сразу две статьи:
Kotlin/Native - Transferring State
Kotlin/Native - Isolated State

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

#posts #libs
firebase-multiplatform - набор библиотек, который предоставляет доступ до Firebase библиотек из common кода.

Уже сейчас доступны под обе мобильные платформы:
• core;
• auth;
• storage.

Так же для мобильных платформ доступен FirestoreKMP (от другого автора).

#libs
Intro to Kotlin Multiplatform and how to share code between Android and iOS – выступление-вводная про kotlin multiplatform. Имеет хороший итог в виде плюсов и минусов, а остальное уже множество раз говорилось.

FlowRedux – библиотека для построения стейтмашины с использованием Flow. Мультиплатформенная, под все возможные таргеты кроме JS. Может быть полезна для построения unidirectional data flow.

#videos #libs
kuiks - библиотека для выполнения UI тестирования, предоставляет common API с actual реализацией через Espresso (Android) и XCTest (iOS).

Данная библиотека позволит убрать Appium и делать общие для платформ UI тесты полностью нативными инструментами, без WebDriver'а и задержек.

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

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

#libs
MVIKotlin - порт MVIDroid на kotlin multiplatform. Это фреймворк для построения MVI архитектуры, с ключевой особенностью в виде "Time Travel" фичи (все действия и изменения состояния сохраняются и можно переключаться между ними внутри приложения).

Фичи:
- Multiplatform: Android, JVM, JavaScript, iosX64, iosArm64, linuxX64
- Библиотека-расширение для работы с Reaktive
- Библиотека-расширение для работы с Coroutines
- Поддержка многопоточности на Kotlin/Native
- Логирование (встроенное и возможность дать кастомный логгер)
- Time Travel:
- Поддерживается на всех платформах
- Готовый подключаемый UI для Android и iOS
- Экспорт и импорт событий для Android

Легче всего понять Time Travel можно по видео - Android , iOS.

#libs
Migration from Room to SQLDelight - небольшой гайд о том как переехать с Room на SQLDelight, причем проведенную автором работу можно в деталях рассмотреть на github. Так же в тексте статьи даются ссылки на конкретные коммиты с решением описанных в статье проблем.

A State Machine for Multi-Threaded Coroutines in Kotlin Multiplatform - реализация стейтмашины с корутинами, в основном код, почти без пояснений.

Summer MVP. Насколько гибок Kotlin? - история разработки библиотеки summer. Рассказано почему были приняты те или иные решения при разработке библиотеки.

#posts #libs
1. reaktive-pm - новая kotlin multiplatform библиотека, реализующая паттерн Presentation Model. Интегрирована с Reaktive. Автор доступен в нашем чате, если есть желание обсудить библиотеку.
#libs

2. Kotlin Multiplatform —Firebase + MVVM - статья показывающая как можно использовать Firebase Firestore в общем коде. Готовые библиотеки позволяют реализовать приложение с Firestore в котором только UI будет платформенный, все остальное можно делать в common коде, без написания своих expect/actual реализаций.
#posts

3. Multithreading in Kotlin Multiplatform Apps - статья описывающая на что наткнулся автор при реализации многопоточности в Kotlin/Native, с советами по опыту.
#posts

4. MVI in Kotlin Multiplatform — part 1 (1 of 3) - статья для знакомящихся с MVI. Аркадий Иванов давно использует MVI, а теперь показывает как это решение применимо в Kotlin Multiplatform, с этим стоит ознакомиться.
#posts

5. apollo-android - библиотека для реализации GraphQL API Client на android, получила обновление 2.0.0 с поддержкой Kotlin Multiplatform и модуль api поддерживает android и ios таргеты. Больше информации в новой документации.
#libs