Kotlin Multiplatform
2.62K subscribers
84 photos
3 videos
407 links
Русскоязычный канал новостей о Kotlin Multiplatform
Download Telegram
Всем привет в новом году. Праздники кончились и канал возвращается к своему обычному расписанию.

Начем год с статьи 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
В OpenSource проекте PeopleInSpace недавно был добавлен таргет watchOS - приложение для часов, которое получает из сети данные и сохраняет их в локальную бд, а UI построен на SwiftUI.

В статье Adding some Storage (to) Space описано как происходило добавление базы данных к проекту.
Так же можно почитать предыдущую статью про SQLDelight от этого автора - Introduction to Multiplatform Persistence with SQLDelight.

Сам же проект PeopleInSpace является небольшим и понятным примером как можно реализовать общую логику включающую и запросы к серверу и постоянное хранение под мобильные платформы и Apple Watch.

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

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

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

#libs
Building a native iOS app with Kotlin Multiplatform - видеозапись (на английском) выступления Lammert Westerhoff.

В видео есть:
• Вводная "что такое kotlin multiplatform";
• Во что компилируется для iOS и некоторые особенности;
• Подход позволяющий обращаться к строкам и изображениям из общего кода;
• Сравнение с нативной и ReactNative разработкой.

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

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

#videos #libs
Какой вариант описания constraints лучше?
Все вызовы такого рода производятся в специальном блоке constraints { ... }
Anonymous Poll
25%
emailInput bottomToTop passwordInput offset 8
75%
emailInput.bottomToTop(passwordInput).offset(8)
Forwarded from Liliia Abdulina
Привет всем, команда мобильной мультиплатформы на связи. :)

У нас есть гипотеза, что у экосистемы мультиплатформенных библиотек есть большой потенциал развития. Но чтобы правильно раскрыть этот потенциал, нам нужно побольше узнать про опыт пользователей. Пожалуйста, расскажите нам о своей жизни в мире мультиплатформенных библиотек, заполнив этот опрос: https://surveys.jetbrains.com/s3/kotlin-mobile-multiplatform-libraries-survey-tg. Опрос небольшой, но требует некоторой рефлексии. Зато в конце вы получите нашу версию списка мультиплатформенных библиотек для iOS + Android, возможно открыв для себя что-то новое, и ещё у вас будет шанс поучаствовать в розыгрыше годового all products pack. :)
Kotlin multiplatform: Android + iOS + Backend в одном монорепозитории - выступление про mpp включающее:
- Проблематику дублирования бизнеслогики и обзор доступных решений;
- Разбор как mpp ложится на идею Clean Architecture;
- Особенности многопоточности Kotlin/Native;
- Сравнение MVP, MVVM, MVI для Kotlin Multiplatform;
- Подробный разбор реализации MVI в mpp;
- Про Rx в mpp (Reaktive);
- Подробный разбор кода приложения (Android, iOS, Backend, тесты).

Код доступен тут: MultiplatformTodoApp

#videos #samples
Всем привет! Котлин тим снова на связи, нам опять нужна помощь комьюнити. И это опять опрос :)
Наши лучшие инженеры (в свободное от нужд мобильных разработчиков время, конечно) уже работают над решением, которое позволит залезать в мозг каждому пользователю мультиплатформы напрямую и доставать оттуда всю необходимую информацию - и тогда опросы будут не нужны. Но к 1.4 мы, увы, не успеем его выкатить, а кое-какие решения надо принимать уже сейчас.
Сегодня решаем, какая структура мультиплатформенного проекта самая-самая. А то в одном сэмпле shared-код намертво срастается с Android-приложением, в другом - полная гранулярность, начинающие пользователи недоумевают, как же всё-таки правильно - и грустят.
По ссылке всего один обязательный вопрос и 100% нет никаких паззлеров про Kotlin/Native memory модель, я проверила: https://forms.gle/8ExHPzZT44ercsqE6
Getting Started with Kotlin on iOS, Part 1 - начало цикла статей о начале разработки на Kotlin Multiplatform для iOS разработчиков от iOS разработчика Autodesk.

В первой статье проведено сравнение языков Swift и Kotlin.

Так-же автор опубликовал небольшой проект-шаблон KotlinMobileBootstrap - общая библиотека, без приложений, с базовой конфигурацией.

#posts #templates