Kotlin Multiplatform
2.62K subscribers
84 photos
3 videos
407 links
Русскоязычный канал новостей о Kotlin Multiplatform
Download Telegram
С прошедшего в прошлом месяце droidcon NYC рекомендую ознакомиться в первую очередь с докладом о эффективной мультиплатформенной архитектуре. Это не очередной доклад про MV* а хороший разбор как привести две платформы к общему коду - подготовиться сначала разбив на модули, после чего выбрать в каком порядке делать подключение второй платформе к общим модулям (разобрано сразу несколько вариантов). Все наглядно с картинками и кодом
https://speakerdeck.com/rharter/effective-multiplatform-architecture

#slides
Сегодня поделюсь недавно опубликованной презентацией доклада о kotlin multiplatform задевающей и сравнение с кроссплатформенными решениями, и создание приложения с стандартной функциональностью мобилок - работа с сетью, хранение данных локально, вывод данных пользователю. Основная ценность именно в наглядном и доступном примере - не "hello world", а с обычным функционалом мобильных приложений. В комплекте и сравнение техстека нативок и мультиплатформенной разработки, и сравнение языков, и отзывы айос разработчиков, и немного рекомендаций. Для тех кто с темой знакомится - рекомендую. Для тех кто уже разрабатывает на мультиплатформе - скорей всего нового ничего не будет (если только работа с sqldelight в новинку, ну и отзывы айосников).
https://speakerdeck.com/cmota/the-hitchhikers-guide-through-kotlin-multiplatform-extended
демо проект тут - https://github.com/cmota/droidconLX

#slides
Ioannis Diamantidis продолжает свою серию статей о Kotlin/Native. Новая статья From Kotlin to Native: Or how Kotlin concepts are mapped to the Apple framework разбирает некоторые особенности получаемого из Kotlin кода iOS фреймворка - как Kotlin код выглядит из ObjectiveC и Swift.
Это не полный список особенностей на стыке Kotlin и ObjC, но знать их очень полезно. Так же еще особенности можно подсмотреть в нашей летней статье - Опыт работы с Kotlin Multiplatform за 10 месяцев. Краткий список особенностей kotlin на стыке с ios доступен в презентации.
Так же в октябре на AppsConf мы отметим еще несколько новых особенностей по актуальной версии Kotlin.

#posts #slides
Можно ли работать с базой данных из common кода под ios и android? Ответ - конечно можно :) И есть несколько путей:
1. Метод "в лоб" - делаем interface реализация которого будет проброшена с нативной стороны и на android и ios делаем отдельные реализации БД так, как привыкли разработчики;
2. Делаем expect/actual классы, чтобы уже внутри котлина реализовать всю работу с БД, используя нативные средства Android и iOS в actual реализациях;
3. Используем библиотеку SQLiter которая позволяет в common коде работать с sqlite БД напрямую, без каких либо оберток;
4. Используем библиотеку SQLDelight от известных square (которые успели переименоваться в cashapp). Данная библиотека идет в паре с gradle plugin'ом который из специального файла, в котором описана схема базы данных и запросы, которые планируется выполнять, генерирует сущности и методы для выполнения запросов. И все это доступно из common кода для обеих мобильных платформ, а так же уже проверено на Android годами ранее.

Рекомендуемый на данный момент способ это конечно SQLDelight. Для знакомства с ним можно воспользоваться:
* Презентацией SELECT * SQLDelight JOIN Multiplatform в которой разобраны преимущества библиотеки;
* Статьей SQLDelight 1.x Quick Start Guide for Android с пошаговой инструкцией и даже примером юниттестирования;
* Статьей Kotlin Multiplatform. Very beginner’s guide (part 3) Database с пошаговым примером реализации БД, но статья со времен kotlin 1.3.31, так что возможны некоторые нестыковки, особенно по версиям библиотек используемых - с 1.3.50 на айос не сойдутся они, нужно более новые;
* Проектом Droidcon Lisbon - здесь в app есть common source set и используется SQLDelight с версией kotlin 1.3.41;
* Проектом Newsout тоже на версии kotlin 1.3.41.

А еще SQLDelight поддерживает Flow для оповещения о изменениях, но на iOS там есть проблемы, требующие обхода.

#libs #slides #projects
Kevin Galligan из Touchlab (автор экспериментальной поддержки generic'ов в kotlin/native) опубликовал несколько презентаций на тему Kotlin Multiplatform.

Kotlin Multiplatform Intro – обзорная презентация о том, что такое Kotlin Multiplatform, какой путь уже был пройден и что, по мнению автора, будет дальше.

Kotlin Multiplatform Libraries – про текущее состояние экосистемы kotlin mpp (что из библиотек есть, чего нет, в чем можно помочь), какие выводы сделаны были по опыту разработки FirestoreKMP (обертка над Firebase Storage для MPP), про ObjC interop (делали проброс Firebase iOS SDK в Kotlin), про крешрепорты в Crashlytics и bugsnap, про публикацию библиотек.

#slides
HMRC делятся опытом использования Kotlin Multiplatform в продакшене. Как обычно, приведено сравнение с другими технологиями, что хотелось решить и что получилось.

Из интересного:
* Общая библиотека доступна на github;
* Подключение к iOS производится через Carthage, а на github лежит уже собранный framework для подключения к iOS;
* Логика покрыта юниттестами;
* Android приложение имеет 1,000,000+ установок;
* iOS приложение активно у 550,000 пользователей в месяц (из описания приложения).

Слайды доступны тут.

#videos #slides
На github есть пример фуллстек проекта на kotlin-multiplatform – chat-app. Примечателен пример по нескольким причинам:
1. Используется актуальная версия kotlin - 1.3.50
2. common библиотека используется на android, ios и frontend
3. есть общий код между клиентской common библиотекой и бекенд приложением (логгер и модель сетевой сущности)
4. common код покрыт тестами (немного)
5. в ios таргет через плагин gradle-cocoapods подключена нативная библиотека SocketRocket
6. frontend сделан на react, но написан на kotlin

Так же автор проекта выступал с докладом про kotlin multiplatform.

#slides #samples
И из более нового - вчера на событии CocoaHeads Berlin был доклад Kotlin/Native at Careem: Experience Report.

Ребята перевели Android приложение на kotlin и выделили mpp-модуль, чтобы быстрее запустить iOS приложение. Описали, как выстроили у себя процесс работы с Kotlin MPP, в чем увидели плюсы, а что оказалось сложностью.

Приложение, о котором идет речь:
Careem Captain (Android) - 1,000,000+ установок
Careem Captain (iOS)

#slides
1. KWeather - проект-пример мультиплатформенного приложения с Jetpack Compose UI. Пока только android target, но это не отменяет готовность проекта к добавлению дополнительных таргетов (основной код в common).
#samples

2. KmpGithubMVVM - еще один проект-пример, с уже реализованными таргетами android и ios, с использованием ktor, serialization, sqldelight и cocoapods интеграцией в iOS. Содержит примеры unit тестов.
#samples

3. Développement Android et iOS avec Kotlin Multiplatform - презентация для знакомства с азами мультиплатформы, с актуальной на данный момент информацией (многие прошлые подобные презентации уже стали неактуальны местами).
#slides

4. Архитектурный шаблон MVI в Kotlin Multiplatform, часть 1 - уже появлявшаяся в нашем канале статья о MVI для мультиплатформы теперь доступна на русском языке.
#posts

5. Creating a MultiPlatform Project with Kotlin/Native (Android/iOS) - гайд по созданию нового мультиплатформенного проекта под Android и iOS, может быть полезен новичкам.
#posts
1. Kotlin 1.4-M2 Released - вторая milestone версия Kotlin 1.4 с большим количеством обновлений по Multiplatform части. Hierarchical multiplatform, commonizer, suspend in iOS и несколько других классных вещей.
#posts

2. MVI in Kotlin Multiplatform — part 2 (2 of 3) - новая статья про MVI в Kotlin Multiplatform. Продемонстрирована реализация загрузки данных без использования внешних зависимостей, подключение к ui через iOS SwiftUI и android View.
#posts

3. Crafting and publishing Kotlin Multiplatform library to Bintray - статья о публикации своей multiplatform библиотеки на bintray.
#posts

4. Kotlin/Native Concurrency for Mobile Multiplatform - презентация о многопоточности в Kotlin/Native от Touchlab. На данный момент наиболее полное и актуальное описание ситуации с многопоточностью в мобильной мультиплатформе вцелом - рекомендуется всем.
#slides

5. Kotlin Hands-on - Kotlin/Native Concurrency - codelab для ознакомления с особенностями многопоточности в Kotlin/Native.
#codelabs

6. bismarck - библиотека кеширования, с поддержкой ios и android.
#libs

7. kaluga - набор библиотек для mobile multiplatform разработки. Содержит функционал для работы с геолокацией, диалогами, клавиатурой, логированием, разрешениями.
#libs
1. Создаём своё первое приложение для Kotlin Multiplatform - статья для мобильных разработчиков желающих познакомиться с Kotlin Multiplatform на русском. Кроме утверждения "на Kotlin/Native не поддерживаются background очереди" всё полезно и наглядно.
#posts

2. dynamo - opensource проект мобильного приложения для генерации паролей с использованием Kotlin Multiplatform.
#samples

3. tesla.kt - библиотека для работы с API автомобилей Tesla. Пока только jvm и js таргеты.
#libs

4. CPMovieMaker - opensource проект мобильного приложения редактора видео (пока только объединение нескольких видео клипов в один). UI написан на Flutter, а бизнес-логика на Kotlin Multiplatform.
#samples

5. What is Kotlin Multiplaform? Why & How? - презенатция с вводной информацией про KMP. Также доступно видео выступления, на арабском.
#slides #videos

6. ConferenceFinder - opensource проект с мобильными приложениями и бекендом на Kotlin. Приложение для поиска конференций.
#samples