ESPNBroncos' striking resemblance to Denver's last Super Bowl winnersPunchNorth Korea women thrash Bangladesh 10-0 in Asian Games openerDaily MaverickReimagining agricultural education as AI transforms farming and future jobsוואלה7 שנות מאסר לסייעת בגן ילדים בנתניה שהורשעה בהתעללות ב-12 פעוטותInquirerMarcos welcomes Imelda acquittal after 40-year graft legal battleRTP DesportoDjokovic fora do top 10 ATP, Zverev ameaça SinnerThe Jerusalem PostIsrael's oldest Holocaust survivor dies at at 107 on Rosh HashanahUOLNo 1º turno, Lula sobe para 42% e Flávio Bolsonaro cai a 37%, mostra pesquisa BTG/NexusColliderOne of the Greatest Sci-Fi Books of the 21st Century Is Under 200 PagesХабрПриз за то, чего вы не сделали: соревнование по кибербезопасности для тех, кто не пишет кодکیهان لندن«توافق دفاعی مکه» موش زائید؟! چشم امید بن‌سلمان به حمایت اسرائیلThe Hollywood Reporter‘Sunday in the Park With George’ Revival Scrapped After Ariana Grande and Jonathan Bailey Exit
The Daily Newsstand · Free, Always
Monday, September 14, 2026

KMP в корпоративной среде: о легаси, миграции и точечном применении

Translate

Kotlin Multiplatform (KMP) перестал быть технологией только для новых проектов. Компании с работающими мобильными приложениями всё чаще рассматривают его как способ сократить дублирование кода и снизить стоимость сопровождения. Директор Nord Clan Алексей Артамонов разбирает, когда такой переход оправдан, какие модули стоит переносить в общий код в первую очередь и что нужно изменить в процессах команды, чтобы технология заработала в реальных условиях.

Полная миграция: когда она имеет смысл

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

В таких условиях вопрос звучит не «Стоит ли внедрить KMP?», а «Окупится ли переход в конкретном продукте?». Ответ зависит от того, какую проблему компания пытается решить. Если речь о дублировании бизнес-логики между платформами, высокой стоимости сопровождения или необходимости синхронно развивать несколько мобильных приложений — KMP может дать ощутимый эффект. Если же приложения уже стабильно работают, команды выстроили процессы, а объём общей логики относительно невелик — переход вряд ли оправдан.

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

Точечное внедрение: как получить эффект без полной перестройки

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

Точечное внедрение работает так: компания выбирает конкретные модули, где дублирование логики создаёт наибольшую нагрузку, и переносит их в общий код. Лучшие кандидаты для этого — модули бизнес-логики, работа с данными, сетевое взаимодействие, авторизация, расчёты и интеграции с корпоративными сервисами. Именно здесь эффект от переиспользования кода обычно максимальный, а зависимость от платформенных особенностей минимальная.

Например, в проектах, где основная сложность сосредоточена в расчётах или интеграциях с корпоративными системами, общий модуль может дать значительный эффект даже без перестройки мобильного приложения целиком. Команда проверяет технологию на ограниченном наборе задач, оценивает результат — и только после этого принимает решение о дальнейшем расширении. Такой подход к внедрению снижает риски и позволяет быстрее получить измеримый результат.

Какие ограничения есть у KMP

Несмотря на активное развитие экосистемы Kotlin Multiplatform, количество полноценных мультиплатформенных библиотек остается существенно меньше, чем для нативной Android- или iOS-разработки. При отсутствии KMP-аналогов команде приходится искать альтернативные библиотеки, писать собственные реализации или создавать платформенные обёртки. Это увеличивает стоимость разработки и сопровождения проекта

Одним из наиболее существенных ограничений является интеграция с библиотеками, написанными на Swift.

Kotlin/Native обеспечивает хорошую совместимость с Objective-C API, однако не поддерживает прямой импорт произвольных Swift-модулей. Если сторонняя библиотека распространяется только как Swift Framework и не предоставляет Objective-C интерфейс, использовать ее непосредственно из общего KMP-кода невозможно.

В таких случаях приходится либо создавать Objective-C-совместимую обёртку поверх Swift-кода, либо вызывать Swift-библиотеку исключительно из iOS-части приложения, не вынося соответствующую логику в общий модуль, либо полностью отказаться от использования библиотеки и искать альтернативное решение.

Подобные ограничения особенно заметны при работе с современными iOS SDK, многие из которых разрабатываются исключительно на Swift и используют возможности языка, недоступные через Objective-C (например, generics, async/await, property wrappers, Swift-only protocol requirements и другие особенности).

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

Как определить, что стоит делать общим

Решение о том, какой код переносить в общий модуль, — один из ключевых архитектурных выборов в KMP-проекте. От него зависит, получит ли компания реальную экономию или только дополнительную сложность.

При проектировании каждого модуля стоит задать один вопрос: зависит ли эта логика от особенностей конкретной платформы? Если нет — кандидат на перенос в общий код. Обычно сюда попадают бизнес-правила, работа с данными, сетевые запросы, авторизация и интеграции с внешними сервисами. Если да — лучше оставить на платформенном уровне. Сюда относится всё, что связано с UI, взаимодействием с устройством и системными сервисами.

Хороший KMP-проект — это проект с правильно определёнными зонами ответственности, а не проект с максимальным объёмом общего кода. Компании, которые понимают это с самого начала, получают от технологии измеримый эффект. Те, кто пытается перенести в общий код всё подряд, со временем сталкиваются с архитектурой, которую сложнее поддерживать, чем две независимые нативные кодовые базы.

View the original on Хабр

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.