Kotlin Multiplatform
2.62K subscribers
84 photos
3 videos
407 links
Русскоязычный канал новостей о Kotlin Multiplatform
Download Telegram
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
1. Multiplatform Settings version 0.6 is out! - главная kmm библиотека по работе с хранением настроек получила обновление. Одно из главных изменений - добавлен дополнительный артефакт no-arg дающий возможность создать экземпляр Settings из общего кода.
#posts

2. Firebase Kotlin SDK - еще одна multiplatform версия Firebase, доступны модули - auth, database, firestore, functions для ios, androidm, jvm, js.
#libs

3. VK SDK Kotlin - неофициальная multiplatform версия vk-sdk, доступна на всех платформах.
#libs

4. Серия постов #TouchlabShare - Building a Business Case for Kotlin Multiplatform & Mobile Code Sharing , How to Evaluate Kotlin Multiplatform, React Native and Flutter , Identifying Parts of your Mobile App for High-Impact Code Sharing , Building a Proof of Concept with Kotlin Multiplatform с записями вебинаров, которые проводил Touchlab ранее.
#videos #posts

Указанные выше библиотеки (и многие другие) можно удобно искать на libs.kmp.icerock.dev, используйте фильтр по kotlin версии для поиска подходящих вам библиотек.
1. touchlab/Kermit - новая библиотека логирования из common кода, схожая с Timber и Napier. В отличии от Napier имеет api более схожее с современным Timber - аргументом передается не строка логирования, а лямбда, которая эту строку сформирует при необходимости.
#libs

2. Kotlin/Native and Xcode integration insights - подробная статья о интеграции Kotlin/Native iOS framework с Xcode проектом без CocoaPods. Проект, на примере которого сделан разбор, доступен на GitHub.
#posts

3. Почему мы выбрали Kotlin одним из целевых языков компании. Часть 2: Kotlin Multiplatform - история внедрения multiplatform от компании ДомКлик. Немного базовой теории о Kotlin MPP и сама история о обобщении функционала аналитики iOS и Android платформ. Задета тема многопоточности и использования AtomicReference.
#posts

4. Multiple Kotlin Frameworks in an Application - статья с разбором возможности подключения нескольких Kotlin/Native iOS framework'ов к одному iOS приложению. Тем кто интересовался темой и ждал когда уберут лимит "only one Kotlin framework can be attached in same time" - нужно ознакомиться, отражены важные особенности.
#posts
1. Kotlin in iOS: Memory Debugging with Xcode and Instruments - статья про отладку памяти iOS приложения с Kotlin/Native через стандартные Instruments в Xcode. С ней в паре идет небольшая заметка (Debug Kotlin with Xcode References) про подключение kotlin исходников в Xcode для работы переходов к коду из Instruments и работы breakpoint'ов.
#posts

2. Kotlin Multiplatform: ready, steady, … - история перевода двух нативных приложений Codeforces WatchR на использование общей логики с Kotlin Multiplatform. Рассказано о подходе Redux в реализации ReKotlin, которую перевели на multiplatform, о миграции на SQLDelight, о переходе с Retrofit на Ktor. Не обошлось и без проблем на iOS, про которые также указано и как были исправлены.
#posts

3. ReKamp - порт библиотеки ReKotlin в multiplatform, разработанный в процессе миграции Codeforces WatchR из вышестоящей статьи.
#libs

4. sample-KMP-compiler-plugin - простой и аккуратный пример compiler плагина для Kotlin, который будет работать и JVM и для Kotlin/Native версий компилятора. В данном примере красиво реализована подмена расположения множества классов комплиятора (у JVM и Kotlin/Native большой набор классов лежит в разных местах) - такой подход однозначно удобнее дублирования (как например пришлось делать в нашем плагине виджетов)
#samples #plugins

5. Using Koin in a Kotlin Multiplatform Project - новая версия DI библиотеки Koin (3.0.0) получила поддержку Kotlin Multiplatform и в статье описаны первые впечатления от использования библиотеки в multipltform варианте.
#posts #libs

6. devtools-library - библиотека предоставляющая инструменты для работы с конфигурациями в приложении, при чем изменение конфигов можно делать в рантайме через подготовленный UI.
#libs
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. Swift Closures in Kotlin Multiplatform - статья о работе с замыканиями (лямбдами) в Swift. Связь статьи с KMP небольшая - она нацелена на android разработчиков пришедших с использованием KMP в iOS. Поясняются основные особенности работы с замыканиями.
#posts

2. Kotlin Symbol Processing: Early Thoughts - статья о находящемся в разработке у Android команды новом инструменте, замене kapt. Kotlin Symbol Processing разрабатывается как multiplatform ready annotation processor, реализованный как compiler-plugin. Также о нем рассказано в видео State of Kotlin on Android.
#posts #videos

3. Experimenting with Ktor - статья о работе с Ktor http client. Полезна для тех кто еще не знаком с Ktor.
#posts

4. Karmok - библиотека и IDEA plugin генерации mock'ов для тестирования common кода. Находится в экспериментальном статусе, но уже можно пробовать себе.
#libs

5. Introduction to Kotlin/Native Concurrency - очередная статья про многопоточность в Kotlin/Native от Touchlab.
#posts

6. Native dependency in Kotlin/Multiplatform — part 1 : architecture - статья о подключении Native зависимостей в мультиплатформу.
#posts

7. Kotlin Multiplatform Library 101 - гайд по реализации своей multiplatform библиотеки от разработки до публикации.
#posts
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
1. Kotlin 1.4.0-RC Released - release candidate 1.4.0 опубликован. В релизе заметные улучшения по работе с iOS Cocoapods, kotlin gradle dsl, подключение kotlin stdlib по умолчанию и другое.
Важно, что все библиотеки собранные с 1.4.0-rc будут гарантированно совместимы с 1.4.0 - авторы библиотек могут активно обновляться до новой версии котлина.
#posts

2. Kotlin/Native Memory Management Roadmap - анонсировано изменение модели управления памятью в Kotlin/Native. Пока без каких либо сроков, но заявлено что JVM и Native подходы к многопоточности станут ближе.
#posts

3. Kotlin/Native Concurrency Changes… - статья-реакция от Кевина Галлигана на анонсированные изменения Kotlin/Native memory model. Мнение главного знатока concurrency в Kotlin/Native пропускать не стоит.
#posts

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

5. Kotlin Multiplatform + Rx + MVVM - статья описывающая реализацию небольшого приложения под android и iOS (OMDB client) с множеством заметок о том, с чем столкнулся автор по пути.
#posts

6. How Kotlin Multiplatform helps reduce app development time - статья описывающая плюсы и минусы Kotlin Multiplatform, но не техническая, а бизнесово-маркетинговая. Вероятно кому-то пригодится.
#posts

7. moko-errors - наша новая multiplatform библиотека, позволяющая упростить обработку ошибок, которые должны быть показаны пользователю.
#libs

p.s. Если у вас есть желание поучаствовать в миграции vksdk на kotlin multiplatform, или есть полезные для данной задачи знания - присоединяйтесь к нашему чату и обсудите это.
Мы в IceRock выпустили новый gradle плагин - MOKO KSwift, с помощью которого можно генерировать Swift-friendly API для Kotlin/Native фреймворка. Постепенно делаем iOS разработчиков счастливее. Подробнее можно прочитать в статье на Хабре, а также в readme на github.

Также плагин позволяет добавлять свою логику генерации, предоставляя гибкое API для расширения.

#libs #posts
Библиотека moko-mvvm получила релиз 0.13.0 с проработанной поддержкой Jetpack Compose и SwiftUI. С новой версией интеграция общей ViewModel в SwiftUI требует минимум кода и без дополнительных классов-оберток.

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

#posts #libs