Завершим серию постов об архитектурных библиотеках не библиотеками, а проектами. Компоненты под эти архитектуры не выделены в библиотеки, но в проектах-примерах можно посмотреть подход к реализации и сделать по примеру.
* MVP - jarroyoesp/KotlinMultiPlatform в общей логике находятся несколько Presenter'ов и их интерфейсы для View;
* MVP - sergiocasero/votlin-app;
* MVP - cmota/droidconLX;
* MVI - petrumo/KotlinMultiplatformMVI в общей логике и reducer'ы и state'ы и прочее, только применение стейта к UI в нативке. Плюс есть статья с разбором - Kotlin Multiplatform MVI.
#libs #posts
* MVP - jarroyoesp/KotlinMultiPlatform в общей логике находятся несколько Presenter'ов и их интерфейсы для View;
* MVP - sergiocasero/votlin-app;
* MVP - cmota/droidconLX;
* MVI - petrumo/KotlinMultiplatformMVI в общей логике и reducer'ы и state'ы и прочее, только применение стейта к UI в нативке. Плюс есть статья с разбором - Kotlin Multiplatform MVI.
#libs #posts
GitHub
GitHub - jarroyoesp/KotlinMultiPlatform: Kotlin MultiPlatform App (Android, iOS, JVM & JS). MVVM/MVP - Kotlin MultiPlatform
Kotlin MultiPlatform App (Android, iOS, JVM & JS). MVVM/MVP - Kotlin MultiPlatform - jarroyoesp/KotlinMultiPlatform
Тем, кто хотел увидеть Rx в общем коде в каком либо проекте, сегодня есть что почитать - статья Kotlin Multiplatform + Reactive подробно рассказывает о процессе создания небольшого приложения с использованием Reaktive, ktor, sqldelight на современной версии kotlin - 1.3.50. Приложение – простой просмотрщик списка фильмов с OMDb, с пагинацией и кешированием.
Что можно наглядно увидеть:
* Взаимодействие coroutines и Reaktive;
* Использование ViewModel'ей (подход, не библиотека);
* Использование UseCase;
* Применение подходов Clean Architecture в kotlin mpp;
* Не самый удобный подход интеграции kotlin-фреймворка в ios приложение (лучше все таки через cocoapods);
* Настройка и использование sqldelight базы данных в mpp.
Итоговый проект доступен на github.
#posts
Что можно наглядно увидеть:
* Взаимодействие coroutines и Reaktive;
* Использование ViewModel'ей (подход, не библиотека);
* Использование UseCase;
* Применение подходов Clean Architecture в kotlin mpp;
* Не самый удобный подход интеграции kotlin-фреймворка в ios приложение (лучше все таки через cocoapods);
* Настройка и использование sqldelight базы данных в mpp.
Итоговый проект доступен на github.
#posts
Medium
Kotlin Multiplatform + Reactive
Kotlin multiplatform + Reactive + MVVM with inputs outputs approach
Russel Wolf (автор одной из первых multiplatform библиотек – multiplatform-settings) недавно выступил с докладом о разработке приложения с kotlin mpp. В приложении сделано несколько общих gradle-модулей, есть тесты (очень даже приличное количество), работа с сетью, базой данных, есть многопоточность, есть и использование плагина BuildKonfig.
Само выступление можно посмотреть на youtube – Bottom-Up Code-Sharing with Kotlin Multiplatform - Russell Wolf, а код посмотреть на github – soluna.
Кстати, в выступлении упомянут один интересный факт – в AppCode и в IDEA Ultimate EAP можно отлаживать kotlin/native-код (это помимо того, что можно использовать lldb для установки breakpoint и плагин xcode-kotlin от touchlab).
#videos
Само выступление можно посмотреть на youtube – Bottom-Up Code-Sharing with Kotlin Multiplatform - Russell Wolf, а код посмотреть на github – soluna.
Кстати, в выступлении упомянут один интересный факт – в AppCode и в IDEA Ultimate EAP можно отлаживать kotlin/native-код (это помимо того, что можно использовать lldb для установки breakpoint и плагин xcode-kotlin от touchlab).
#videos
Чтобы лучше понять, что такое Kotlin Multiplatform, чем эта технология отличается от того, что уже было до Kotlin и почему сейчас мы имеем то, что имеем, рекомендую посмотреть выступление Ильи Матвеева из JetBrains - Мультиплатформенные проекты в Kotlin 1.3 c Mobius 2019.
В выступлении рассказано почему решили делать новую технологию, чем она лучше #ifdef от C, какие проблемы получили пытаясь адаптировать gradle под mpp, как дальше их решали. Интересные вещи про поддержку mpp в IDE с пояснением проблем, о которых в работе особо не задумываешься.
#videos
В выступлении рассказано почему решили делать новую технологию, чем она лучше #ifdef от C, какие проблемы получили пытаясь адаптировать gradle под mpp, как дальше их решали. Интересные вещи про поддержку mpp в IDE с пояснением проблем, о которых в работе особо не задумываешься.
#videos
YouTube
Илья Матвеев — Мультиплатформенные проекты в Kotlin 1.3
Ближайшая конференция: Mobius 2023 Spring — 12–13 мая (Online), 19-20 мая (Offline)
Подробности и билеты: https://bit.ly/3FxJRd7
— —
. . .
. Доклад о том, что изменилось в Kotlin Multiplatform, непосредственно от разработчика продукта.
Котлин известен в…
Подробности и билеты: https://bit.ly/3FxJRd7
— —
. . .
. Доклад о том, что изменилось в Kotlin Multiplatform, непосредственно от разработчика продукта.
Котлин известен в…
Плагин для Xcode, позволяющий ставить breakpoint'ы в kotlin коде, получил обновление до Xcode 11.
Для установки нужно просто скачать актуальное состояние с master и запустить скрипт setup.
Помимо установки точек останова можно выводить использовать специальны скрипт для вывода данных из локальных переменных – konan_lldb.py для lldb (консоль отладчика в Xcode). Для его использования согласно документации по отладке Kotlin/Native нужно:
вызвать
#tips
Для установки нужно просто скачать актуальное состояние с master и запустить скрипт setup.
Помимо установки точек останова можно выводить использовать специальны скрипт для вывода данных из локальных переменных – konan_lldb.py для lldb (консоль отладчика в Xcode). Для его использования согласно документации по отладке Kotlin/Native нужно:
вызвать
command script import <путь до konan_lldb.py
, а после этого, используя p <имя переменной>
, можно получать информацию о kotlin объектах.#tips
GitHub
GitHub - touchlab/xcode-kotlin: Kotlin Native Xcode Plugin
Kotlin Native Xcode Plugin. Contribute to touchlab/xcode-kotlin development by creating an account on GitHub.
Команда SuperAwesome разработала мобильное приложение Rukkaz для видео стримингового сервиса с использованием kotlin multiplatform. Про это они рассказали в своей статье – How we developed our new video platform Rukkaz as a cross-platform mobile app.
Само приложение можно скачать и посмотреть:
iOS
Android
Немного поглядев внутри apk, можно заметить, что используется как минимум ktor-client и coroutines, а это подсказывает что в общей библиотеке находится как минимум сетевой слой.
#cases #posts
Само приложение можно скачать и посмотреть:
iOS
Android
Немного поглядев внутри apk, можно заметить, что используется как минимум ktor-client и coroutines, а это подсказывает что в общей библиотеке находится как минимум сетевой слой.
#cases #posts
Medium
How we developed our new video platform Rukkaz as a cross-platform mobile app
While developing natively for iOS and Android we realised we were writing the same functionalities twice. So we stopped.
Для упрощения поиска и подключения библиотек к kotlin проектам (и multiplatform в том числе) JetBrains выпустили плагин Package Search. Он позволяет прямо в конфигурации gradle запустить генерацию кода подключения зависимости с поиском нужной зависимости прямо в IDE. Цель – упростить поиск библиотек по примеру опыта NuGet.
На данный момент вышла EAP версия и нам доступно:
- Поддержка только groovy gradle (kotlin dsl в планах);
- Поиск по модулям, опубликованным на mavenCentral (в дальнейшем планируют расширить количество репозиториев);
- Индексация автоматическая – автору библиотеки не надо специально куда-то добавлять самому (но надо на поддерживаемый репозиторий залить – сейчас mavenCentral);
- В списке библиотек сразу выводится пометка о поддержке multiplatform;
- В multiplatform библиотеках перечисляются все поддерживаемые таргеты;
- Индексируется и информация с github - ссылка на репозиторий, звезды, форки, ридми, лицензия и прочее.
Пока не понятно как это будет работать с объявлением зависимостей в buildSrc, а так же для удобства работы с Kotlin/Native очень не хватает информации о версии kotlin, которую поддерживает выбранная версия библиотеки. А лучше и фильтры по версии, чтобы не искать среди кучи библиотек какая поддерживает используемую на проекте версию котлина.
#news
На данный момент вышла EAP версия и нам доступно:
- Поддержка только groovy gradle (kotlin dsl в планах);
- Поиск по модулям, опубликованным на mavenCentral (в дальнейшем планируют расширить количество репозиториев);
- Индексация автоматическая – автору библиотеки не надо специально куда-то добавлять самому (но надо на поддерживаемый репозиторий залить – сейчас mavenCentral);
- В списке библиотек сразу выводится пометка о поддержке multiplatform;
- В multiplatform библиотеках перечисляются все поддерживаемые таргеты;
- Индексируется и информация с github - ссылка на репозиторий, звезды, форки, ридми, лицензия и прочее.
Пока не понятно как это будет работать с объявлением зависимостей в buildSrc, а так же для удобства работы с Kotlin/Native очень не хватает информации о версии kotlin, которую поддерживает выбранная версия библиотеки. А лучше и фильтры по версии, чтобы не искать среди кучи библиотек какая поддерживает используемую на проекте версию котлина.
#news
Скорей всего уже всем известно, что для работы с сетью в kotlin multiplatform доступна библиотека ktor. С ее помощью мы можем выполнять любые http запросы.
Если рассмотреть более специализированные решения, типа библиотек для REST API, то можно вспомнить про генерацию кода для ktor-client в moko-network из OpenAPI (Swagger) спецификации.
Еще помимо REST API есть популярный подход - GraphQL. И для этого тоже есть готовое решение - kgql позволяет из gql спецификации сгенерировать код для kotlinx.serialization, а далее останется только написать код вызова запроса (endpoint'ов то у graphql обычно как раз не много).
#libs
Если рассмотреть более специализированные решения, типа библиотек для REST API, то можно вспомнить про генерацию кода для ktor-client в moko-network из OpenAPI (Swagger) спецификации.
Еще помимо REST API есть популярный подход - GraphQL. И для этого тоже есть готовое решение - kgql позволяет из gql спецификации сгенерировать код для kotlinx.serialization, а далее останется только написать код вызова запроса (endpoint'ов то у graphql обычно как раз не много).
#libs
GitHub
GitHub - ktorio/ktor: Framework for quickly creating connected applications in Kotlin with minimal effort
Framework for quickly creating connected applications in Kotlin with minimal effort - ktorio/ktor
На каком этапе знакомства с kotlin multiplatform (в контексте мобильной разработки) вы находитесь?
Anonymous Poll
17%
Не интересовался до этого, сейчас стало интересно
50%
Просто интересуюсь, бывает читаю статьи
6%
Пробую сам в своих домашних проектах, все ок
11%
Попробовал сам, столкнулся с проблемами
4%
Пробуем на работе и обсуждаем возможное внедрение в активный проект
2%
Попробовали на работе и отказались
5%
Интегрируем в существующий активный проект
6%
Разрабатываем новые проекты на этой технологии
Опрос показал, что половина участников пока только знакомится с информацией и статьями, но не пробовали kotlin multiplatform в разработке мобильных приложений.
На грядущие выходные есть полезные материалы для этой половины:
1. На github доступен шаблон проекта moko-template, который позволяет быстро начать разработку мобильного приложения с mpp внутри, имеет подключенные moko-библиотеки и пример из пары фич (архитектура проекта многомодульная, что положительно сказывается на времени пересборки ios-таргета);
2. В дополнение к moko-template доступны codelab'ы, в которых разобрано создание приложения просмотра списка GIF'ок на основе moko-template;
3. На kmp.icerock.dev можно найти множество ссылок на полезные статьи, важные блоки документации kotlin про mpp, полезные библиотеки как официальные так и от сообщества, проекты примеры.
Надеюсь эти материалы помогут вам попробовать технологию и упростят изучение.
Ошибки/предложения по можно писать в issues на github (moko-template, codelabs, kmp).
#tips
На грядущие выходные есть полезные материалы для этой половины:
1. На github доступен шаблон проекта moko-template, который позволяет быстро начать разработку мобильного приложения с mpp внутри, имеет подключенные moko-библиотеки и пример из пары фич (архитектура проекта многомодульная, что положительно сказывается на времени пересборки ios-таргета);
2. В дополнение к moko-template доступны codelab'ы, в которых разобрано создание приложения просмотра списка GIF'ок на основе moko-template;
3. На kmp.icerock.dev можно найти множество ссылок на полезные статьи, важные блоки документации kotlin про mpp, полезные библиотеки как официальные так и от сообщества, проекты примеры.
Надеюсь эти материалы помогут вам попробовать технологию и упростят изучение.
Ошибки/предложения по можно писать в issues на github (moko-template, codelabs, kmp).
#tips
GitHub
GitHub - icerockdev/moko-template: Template project of a Mobile (Android & iOS) Kotlin MultiPlatform project with the MOKO libraries…
Template project of a Mobile (Android & iOS) Kotlin MultiPlatform project with the MOKO libraries and modularized architecture - icerockdev/moko-template
Советы из опыта
suspend-функции в публичном интерфейсе библиотеки, которая компилируется в iOS framework, автоматически стираются. Это происходит потому что в objective-c (и swift) нет аналога suspend-функций. По этой причине рекомендуется держать всю работу с kotlin-coroutines внутри kotlin.
Если же требуется вызывать suspend-функцию из swift/objective-c, то можно в ios-specific коде сделать экстеншен-функцию принимающую callback, а внутри функции запускать корутину например на GlobalScope. При чем это можно делать не вручную, а использовать плагин, генерирующий такую функцию автоматически, например - Recast, kotlin-native-suspend-function-callback.
#tips
suspend-функции в публичном интерфейсе библиотеки, которая компилируется в iOS framework, автоматически стираются. Это происходит потому что в objective-c (и swift) нет аналога suspend-функций. По этой причине рекомендуется держать всю работу с kotlin-coroutines внутри kotlin.
Если же требуется вызывать suspend-функцию из swift/objective-c, то можно в ios-specific коде сделать экстеншен-функцию принимающую callback, а внутри функции запускать корутину например на GlobalScope. При чем это можно делать не вручную, а использовать плагин, генерирующий такую функцию автоматически, например - Recast, kotlin-native-suspend-function-callback.
#tips
Android Framework накладывает на android-разработчика множество ограничений из-за сложного жизненного цикла компонентов системы:
- Activity пересоздаются при поворотах экрана, при смене языка системы, что не происходит на iOS.
- Приложение может быть выключено системой почти в любой момент из-за нехватки памяти, но когда пользователь решит вернуться в приложение через "карусель" приложений - он должен попасть туда же, где и был (и фреймворк предлагает специальные механизмы под это).
Для передачи данных между пересозданиями Activity (или просто при переходе на новый экран) часто используется Parcelable - специальный механизм сериализации данных, разработанный для android. И android-разработчики часто его используют, а потому и в multiplatform библиотеке отказаться от него не хотелось бы. Об этом и пишет Ankush Gupta в своей статье - Using @Parcelize in Kotlin Multiplatform.
А для тех, кто хотел бы подключить себе готовую реализацию в проект - есть moko-parcelize.
#posts #libs
- Activity пересоздаются при поворотах экрана, при смене языка системы, что не происходит на iOS.
- Приложение может быть выключено системой почти в любой момент из-за нехватки памяти, но когда пользователь решит вернуться в приложение через "карусель" приложений - он должен попасть туда же, где и был (и фреймворк предлагает специальные механизмы под это).
Для передачи данных между пересозданиями Activity (или просто при переходе на новый экран) часто используется Parcelable - специальный механизм сериализации данных, разработанный для android. И android-разработчики часто его используют, а потому и в multiplatform библиотеке отказаться от него не хотелось бы. Об этом и пишет Ankush Gupta в своей статье - Using @Parcelize in Kotlin Multiplatform.
А для тех, кто хотел бы подключить себе готовую реализацию в проект - есть moko-parcelize.
#posts #libs
Вышла новая библиотека для работы со временем - island-time. Отличается она от существующих multiplatform библиотек тем, что планируется воспроизвести доступный в java.time функционал.
Что доступно:
* Работа с датами и временем, с учетом таймзон;
* Работа с таймзонами;
* Работа с периодами и отрезками времени;
* Парсинг строки в дату (включая и нестандартные форматы).
Пока нет:
* Стабильного релиза (сейчас активная фаза разработки с SNAPSHOT'ами);
* Форматирование даты в строку.
#libs
Что доступно:
* Работа с датами и временем, с учетом таймзон;
* Работа с таймзонами;
* Работа с периодами и отрезками времени;
* Парсинг строки в дату (включая и нестандартные форматы).
Пока нет:
* Стабильного релиза (сейчас активная фаза разработки с SNAPSHOT'ами);
* Форматирование даты в строку.
#libs
GitHub
GitHub - erikc5000/island-time: A Kotlin Multiplatform library for working with dates and times
A Kotlin Multiplatform library for working with dates and times - erikc5000/island-time
Kaskade - еще одна библиотека с архитектурными компонентами. Позволяет реализовывать unidirectional data flow.
Поддерживается последняя версия kotlin - 1.3.50, платформы JVM, iOS, JS. Имеет интеграции с coroutines, livedata, rxjava.
На примере android приложения разобрана работа с библиотекой в статье Managing states with Kaskade
#libs #posts
Поддерживается последняя версия kotlin - 1.3.50, платформы JVM, iOS, JS. Имеет интеграции с coroutines, livedata, rxjava.
На примере android приложения разобрана работа с библиотекой в статье Managing states with Kaskade
#libs #posts
GitHub
GitHub - gumil/Kaskade: [INACTIVE] Simplifying state management
[INACTIVE] Simplifying state management. Contribute to gumil/Kaskade development by creating an account on GitHub.
Советы из опыта
При компиляции Kotlin в iOS-framework нужно учитывать, что abstract class'ы станут в Objective-C (и Swift) обычными классами. Это происходит из-за того, что в Objective-C и Swift нет абстрактных классов. Поэтому Xcode при компиляции никак не проверит реализовал ли разработчик абстрактный метод или нет. Если абстрактный метод останется не реализованным то в рантайме будет выброшено исключение.
Рекомендуется просто не выносить абстрактные классы в публичный интерфейс. Их можно использовать внутри kotlin, а наружу можно выдать интерфейс, который требуется с нативной стороны реализовать.
#tips
При компиляции Kotlin в iOS-framework нужно учитывать, что abstract class'ы станут в Objective-C (и Swift) обычными классами. Это происходит из-за того, что в Objective-C и Swift нет абстрактных классов. Поэтому Xcode при компиляции никак не проверит реализовал ли разработчик абстрактный метод или нет. Если абстрактный метод останется не реализованным то в рантайме будет выброшено исключение.
Рекомендуется просто не выносить абстрактные классы в публичный интерфейс. Их можно использовать внутри kotlin, а наружу можно выдать интерфейс, который требуется с нативной стороны реализовать.
#tips
Для мобильных приложений бывает необходимо постоянно держать связь с сервером для обмена данными (трекинг геолокации, статусов заказов и прочее) и для этого используют socket'ы. Для Kotlin Multiplatform доступна библиотека kEasySocket, которая позволяет из общего кода работать с webscoket'ами.
Поддерживается Android и iOS, работает на актуальной версии Kotlin – 1.3.50, api на базе coroutines.
Помимо того, что библиотеку можно подключить себе в проект, в коде библиотеки можно посмотреть пример использования cinterop для подключения C-library OpenSSL в Kotlin/Native.
#libs
Поддерживается Android и iOS, работает на актуальной версии Kotlin – 1.3.50, api на базе coroutines.
Помимо того, что библиотеку можно подключить себе в проект, в коде библиотеки можно посмотреть пример использования cinterop для подключения C-library OpenSSL в Kotlin/Native.
#libs
GitHub
GitHub - luca992/kEasySocket
Contribute to luca992/kEasySocket development by creating an account on GitHub.
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
Kotlin Multiplatform Intro – обзорная презентация о том, что такое Kotlin Multiplatform, какой путь уже был пройден и что, по мнению автора, будет дальше.
Kotlin Multiplatform Libraries – про текущее состояние экосистемы kotlin mpp (что из библиотек есть, чего нет, в чем можно помочь), какие выводы сделаны были по опыту разработки FirestoreKMP (обертка над Firebase Storage для MPP), про ObjC interop (делали проброс Firebase iOS SDK в Kotlin), про крешрепорты в Crashlytics и bugsnap, про публикацию библиотек.
#slides
Speaker Deck
Kotlin Multiplatform Intro
Introduction to Kotlin Multiplatform, at Oredev.
На Kotlin/Everywhere Venezia тоже рассказывают про Kotlin Multiplatform (можно использовать субтитры с автопереводом с итальянского в English - получается адекватный перевод).
В видео есть:
• сравнение с RN, Flutter;
• кратко о устройстве MPP;
• лайвкодинг с примером приложения-расписания для конференции (исходный код доступен на GitHub);
• для приложения был сделан и backend на kotlin, но с ним никакой код не шарится.
Презентация доступна по ссылке.
#videos #samples
В видео есть:
• сравнение с RN, Flutter;
• кратко о устройстве MPP;
• лайвкодинг с примером приложения-расписания для конференции (исходный код доступен на GitHub);
• для приложения был сделан и backend на kotlin, но с ним никакой код не шарится.
Презентация доступна по ссылке.
#videos #samples
YouTube
Kotlin Multiplatform | Kotlin/Everywhere Venezia 2019
ITA: Amanti di Kotlin (ma non solo) a rapporto! L'argomento di questo talk e' Kotlin Multiplatform ed in particolare vedremo come e' possibile creare un'applicazione Android ed iOs che condivide una parte del codice (es. business logic, network, etc.). Ma…
HMRC делятся опытом использования Kotlin Multiplatform в продакшене. Как обычно, приведено сравнение с другими технологиями, что хотелось решить и что получилось.
Из интересного:
* Общая библиотека доступна на github;
* Подключение к iOS производится через Carthage, а на github лежит уже собранный framework для подключения к iOS;
* Логика покрыта юниттестами;
* Android приложение имеет 1,000,000+ установок;
* iOS приложение активно у 550,000 пользователей в месяц (из описания приложения).
Слайды доступны тут.
#videos #slides
Из интересного:
* Общая библиотека доступна на github;
* Подключение к iOS производится через Carthage, а на github лежит уже собранный framework для подключения к iOS;
* Логика покрыта юниттестами;
* Android приложение имеет 1,000,000+ установок;
* iOS приложение активно у 550,000 пользователей в месяц (из описания приложения).
Слайды доступны тут.
#videos #slides
YouTube
Kotlin Multiplatform at HMRC
We were extremely lucky to have a talk by George Herbert from Capgemini where he discussed how Kotlin Multiplatform (KMP) was implemented at HMRC.
During this talk, he talked about the reasons behind the use of KMP and how he made it work with iOS, Android…
During this talk, he talked about the reasons behind the use of KMP and how he made it work with iOS, Android…
На 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
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
GitHub
GitHub - felipehjcosta/chat-app: Chat Multiplatform for Web, Android, iOS and Apple Watch
Chat Multiplatform for Web, Android, iOS and Apple Watch - felipehjcosta/chat-app
Информация для тех кто в Новосибирске:
Мы (IceRock) приглашаем всех Вас на наш первый открытый митап Kotlin/Everywhere, который состоится 24 ноября в лекторий-баре "Поток" (улица Депутатская 46 "СИТИЦЕНТР").
Сбор гостей в 10.00
На митапе выступят:
Илья Матвеев (спикер из JetBrains)
расскажет, как организованы мультиплатформенные проекты с позиции билд-системы.
Дмитрий Доловов (спикер из JetBrains)
поделится опытом, с какими задачами его команда столкнулась и какие решения использовала, чтобы сделать интеграцию Kotlin/Native с платформой возможной.
Андрей Ковалёв
расскажет об использовании KotlinMultiplatform IOS-разработчиком, об особенностях процессах разработки мультиплатформенных проектов, какие преимущества и планы по развитию Kotlin Multiplatform в компании.
Алексей Михайлов
в live-режиме (то есть прямо вместе с аудиторией) реализует небольшое приложение с использованием kotlin multiplatform на обе платформы.
Регистрация обязательна.
Активные участники могут выиграть лицензию на продукцию JetBrains, так что задавайте вопросы и общайтесь со спикерами.
Будем благодарны за шаринг постов:
• vkontakte
• facebook
#events
Мы (IceRock) приглашаем всех Вас на наш первый открытый митап Kotlin/Everywhere, который состоится 24 ноября в лекторий-баре "Поток" (улица Депутатская 46 "СИТИЦЕНТР").
Сбор гостей в 10.00
На митапе выступят:
Илья Матвеев (спикер из JetBrains)
расскажет, как организованы мультиплатформенные проекты с позиции билд-системы.
Дмитрий Доловов (спикер из JetBrains)
поделится опытом, с какими задачами его команда столкнулась и какие решения использовала, чтобы сделать интеграцию Kotlin/Native с платформой возможной.
Андрей Ковалёв
расскажет об использовании KotlinMultiplatform IOS-разработчиком, об особенностях процессах разработки мультиплатформенных проектов, какие преимущества и планы по развитию Kotlin Multiplatform в компании.
Алексей Михайлов
в live-режиме (то есть прямо вместе с аудиторией) реализует небольшое приложение с использованием kotlin multiplatform на обе платформы.
Регистрация обязательна.
Активные участники могут выиграть лицензию на продукцию JetBrains, так что задавайте вопросы и общайтесь со спикерами.
Будем благодарны за шаринг постов:
• vkontakte
#events
icerock.timepad.ru
Kotlin/Everywhere / События на TimePad.ru
24 ноября проводим митап, посвященный разработке на Kotlin - разработка под Android, Kotlin Multiplatform, Kotlin/Native.