Максим Мялкин

+112
с 2017

Управляющий партнёр и руководитель мобильной разработки KTS: https://kts.tech/

18 подписчиков
39 подписок

Перечислю некоторые крупные компаний, помимо тех, что указаны на оф странице(https://www.jetbrains.com/help/kotlin-multiplatform-dev/case-studies.html), а также с публичной информацией (по чатам разработки еще можно найти доп инфу о других крупных компаниях).

- QIWI (https://habr.com/ru/companies/qiwi/articles/658275/)
- X5 (https://www.youtube.com/watch?v=DNt0S89Vptc)
- Сбер (https://mobiusconf.com/en/archive/2024%20Spring/talks/9ff5cf19feea4b948977e90f4fd711ea/)
- Яндекс (есть в сети информация про диск, карты, кинопоиск)
- X (https://x.com/arkann1985/status/1880246578474283303)
- Google (https://www.youtube.com/watch?v=5sOXv-X43vc)
- Тинькофф (https://time-messenger.ru/)
- Okko (https://www.youtube.com/watch?v=DIRaWnwXIvk)
- Todoist (https://www.youtube.com/watch?v=z-o9MqN86eE)

На последнем Google IO рассказали что google поддерживают KMP на андроиде официально (https://android-developers.googleblog.com/2024/05/android-support-for-kotlin-multiplatform-to-share-business-logic-across-mobile-web-server-desktop.html)

Все просто: флаттер тормозил, нативная шахматка нет. Доступа к коду другой команды не имеем, поэтому нельзя сказать, написано ли там плохо

Не продаются. Но это никак не влияет на технологию. Она распространяется бесплатно, как и язык Kotlin. Разработку на KMP можно вести в бесплатной IDE Android Studio от Google на основе продуктов JB.

По нашему опыту другая ситуация - ребятам интересно с этим работать. И отказов из-за KMP не было. Если у вас есть статистика на большом масштабе, было бы интересно взглянуть.

Что касается порога входа - андроид разработчику не составляет никаких проблем перейти на KMP: сменить несколько библиотек, изучить несколько нюансов как написать код, чтобы в ios было легко с ним работать (можно делать в процессе дальнейшей разработки уже, если не сталкивался до этого). В остальном все очень схоже, если у разработчика есть опыт работы с актуальным стеком на android.

По bluetooth одна из последних задач - автоматическое открытие дверей в момент приближения человека, у которого есть телефон с доступом. При этом приложение может не всегда быть запущено.

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

Для примеров можно открыть тысячи issue платформ ios и android (https://github.com/flutter/flutter/issues?q=is%3Aopen+label%3Aplatform-ios%2Cplatform-android+). Некоторые из проблем кажутся незначительными. Но есть и глобальные, например: 1(https://github.com/flutter/flutter/issues/82906), 2(https://www.reddit.com/r/FlutterDev/comments/yywx66/attn_all_your_vote_is_needed_to_fix_critical/), 3(https://www.reddit.com/r/FlutterDev/comments/1140pdv/two_years_later_flutters_biggest_problem/) .

2

Откуда информация, что гугл хочет отказаться от Kotlin?

Вот например они свои андроидовские библиотеки отвязывают от платформы: 1(https://developer.android.com/kotlin/multiplatform), 2(https://twitter.com/ianhlake/status/1704596833245573287).
Кроме этого гугл пробует KMP у себя в проектах (https://www.youtube.com/watch?v=C9gCm51RhsU)
Также Kotlin нужен для Compose.

1

При его подключении в текущее приложение есть ограничения, например можно подключать через полноценные VC в ios. И не получится пойти от обратного: начинать переиспользовать логику в отрыве от UI. KMP в свою очередь не накладывает ограничение на шаринг тех или иных компонентов - где нужно можно пошарить, где не нужно - не шарить.

Рисование календаря это про ui, compose-multiplatform для ios находится в альфе ещё, его использовать действительно рано, тк есть много ограничений.

По поводу статуса kmp - бета означает, что уже стабилизируется api, но изменения могут быть. Это не значит что в технологии есть проблемы. Детальнее можно тут посмотреть: https://kotlinlang.org/docs/components-stability.html#stability-levels-explained
По нашему опыту за почти 2 года блокирующих проблем со стабильностью не было

По планам стабильности - официально к концу года kmp планируется перевести в stable (https://youtrack.jetbrains.com/issue/KT-55513)

2

Насчет дат: в таких узких кейсах можно реализовать работу с ними через механизм expect/actual в несколько десятков строчек

2

Под “бизнес-логикой” люди часто понимают разное. И в KMP действительно можно выносить в кроссплатформу разные части, по потребности. В статье мы не стали раскрывать что именно туда входит, тк не хотели закапываться в технику, но кратко опишу тут.
Кто-то в KMP выносит только логику работы с данными, а кто-то всю логику: презентационную, доменную, логику работы с источниками данных. Более детально можно посмотреть в опросе от JB (https://blog.jetbrains.com/kotlin/2021/10/multiplatform-survey-q1-q2-2021/). В наших проектах мы идем по второму пути, и поэтому из KMP-части прилетает только UiState, который нужно отрисовать на UI на платформах и передать из платформ в KMP событие от пользователя. Так получается достичь большего переиспользования.

3