Connect with us

Видео и подкасты для разработчиков

Kotlin Multiplatform в большом проекте

Доклад будет интересен мобильным разработчикам и их руководителям. Поможет оценить стоимость внедрения KMP в проекты и плюсы, которые эта технология дает.

Опубликовано

/

     
     

На просторах интернета много информации о том, как написать «Hello World» на Kotlin Multiplatform (KMP). Есть даже доклады про написание отдельно взятой фичи. Но не так много информации о том, с чем вы столкнетесь, если захотите масштабно внедрить KMP в большой проект. Сергей Кришталь рассказал про опыт команды мобильных Яндекс Карт и Навигатора.

Его команда разрабатывает продукты с многомиллионной аудиторией, а доля KMP в коде уже 20% от суммарного объема кода для iOS и Android — и она постоянно растет. За время использования данной технологии они столкнулись с множество сложностей и нетривиальных проблем и научились их решать. Выработали подходы к тому, как писать код и строить процессы, чтобы использовать KMP эффективно. Теперь спикер готов поделиться опытом с широкой аудиторией.

Доклад будет интересен мобильным разработчикам и их руководителям. Поможет оценить стоимость внедрения KMP в проекты и плюсы, которые эта технология дает.

Автор начинает с описания масштаба проекта: два основных приложения собираются из одной кодовой базы, аудитория составляет десятки миллионов пользователей, а команда — шесть групп и более сорока разработчиков. На момент презентации уже 20% кода для обеих платформ написано с использованием KMP. Сам переход к мультиплатформенному коду обусловлен желанием сократить дублирование разработки и уменьшить число ошибок, связанных с расхождениями платформенной логики.

Этому предшествовал эксперимент с использованием C++, однако поддержка и развитие такой реализации оказались слишком сложными и затратными. Альтернативами рассматривались React Native и Flutter, но они не подошли из-за приоритета нативного UI и особенностей производительности. В итоге выбор пал на Kotlin Multiplatform, поскольку часть команды уже хорошо знакома с Kotlin, а бизнес-логику можно было написать один раз с понятными затратами.

Переход проходил поэтапно: команда сначала реализовала простые функции наподобие парсинга диплинков, затем изолированные сценарии, быстрое прототипирование внутренних инструментов для QA, далее перешла к общим бизнес-сценариям, например статусу доставки в Яндекс.Картах. Завершилось всё крупными пользовательскими сценариями, затрагивающими маршрутный функционал и отображение объектов на карте. Главное техническое решение — симметричная архитектура мультиплатформенных модулей, которая позволяет бизнес-логике быть одинаковой для обеих платформ. Ведётся интеграция с нативными слоями MapKit, разработанными на C++, что потребовало сложных биндингов и автоматизированной генерации кода.

Среди трудностей упоминаются вопросы модели памяти, различные аспекты интеграции с нативными библиотеками, специфика работы GC в iOS после появления новой модели памяти в Kotlin Native, особенности сборки кода для разных целей и поддержка обфускации на Android и iOS. Организационные процессы также перестроены, команды из разрозненных групп превратились в слаженный отдел, уменьшилась когнитивная нагрузка, проще стало поддерживать бизнес-логику, а ошибки, связанные со сценариями, теперь исправляются единоразово для обеих платформ.

Доклад выделяет преимущества Kotlin Multiplatform: экономия времени, сокращение багов, упрощение процессов, повышение качества коммуникации и облегчение поддержки новых функций. Отдельно упоминается, что переходить к мультиплатформенным решениям стоит постепенно и что автоматизация — ключ к уменьшению бойлерплейта. В итоге подход демонстрирует, как мультиплатформенный основной код позволяет мобильным приложениям быть более надёжными, эффективными и проще в сопровождении.

Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Telegram

Популярное

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: