Сэкономить бюджет и ускорить разработку: переход на Kotlin Multiplatform
Рассказываю, какие виды переходов на мультиплатформу стоят 100 тыс. рублей, 500 тыс. рублей и 3 млн рублей

Более 10 лет руководитель компанией по разработке мобильных приложений. До этого 7 лет работал в компании Alawar на позиции программиста, руководителя отдела и технического директора
Kotlin Multiplatform Mobile — мультиплатформенный инструмент, который позволяет создавать общий код для приложения на iOS/Android и сэкономить до трети бюджета и ускорить разработку на 25%.
Но что, если у вас уже есть проект и вы хотите перейти на KMM? Рассказываю, какие виды переходов на мультиплатформу стоят 100 тыс. рублей, 500 тыс. рублей и 3 млн рублей.
Когда стоит внедрить KMM
Перейти на Kotlin Multiplatform Mobile можно как в начале разработки, так и на этапе реализации или запуска готового проекта. Чтобы вы получили выгоду от внедрения, должно выполняться одно из трех условий:
- У вас есть приложение или вы только начали его разрабатывать, и его будут использовать на разных платформах: Android и iOS.
- У вашего приложения с Android- и iOS-версиями сложная бизнес-логика при простом UI. Например, при офлайн-синхронизации.
- У вас есть Android-приложение на Kotlin, но вам срочно нужно выпустить версию на iOS c переиспользованием того, что уже сделано.
60% — столько разработчиков используют или хотя бы пробовали в продакшене Kotlin Multiplatform, согласно недавно опубликованному опросу JetBrains.
Что даст внедрение KMM
В перспективе вы можете сэкономить до трети бюджета. В основном экономия бюджета происходит за счет разработки общего кода сразу для двух платформ: Android и iOS — его может написать один человек.
Вы ускорите разработку на 25% и в перспективе получите возможность быстрее и легче внедрять новые функции сразу на двух платформах.
Проекты станут работать идентично на двух платформах, не будет различия в мелких деталях или сложных кейсах.
У разработчиков на iOS и Android будет общий контекст, что позволит им понимать чужой код в любом месте бизнес-логики и оперативно дорабатывать его и вносить исправления.
Возможно, именно поэтому 75% тех, кто когда-либо пробовал Kotlin Multiplatform ради интереса, собираются использовать ее в настоящих проектах.
Как происходит переход на KMM
Сценарий перехода на KMM зависит от текущей ситуации в вашем проекте. Условно можно выделить три сценария. Покажу их на примере кейсов.
Сценарий 1. У вас есть приложение на обеих платформах, и вам нужна помощь экспертов, чтобы сделать общую бизнес-логику
Приложение для поиска специалистов из разных областей. Работает на iOS и Android. Заказчик попросил помочь перенести бизнес-логику из Android-приложения на мультиплатформу.
Как шел процесс между заказчиком и подрядчиком:
- Подписали NDA.
- Проанализировали проект.
- Составили индивидуальный план внедрения KMM.
- Клиент начал по плану перетаскивать бизнес-логику в общий код.
Как быстро сделали и сколько это стоило. Вообще, внедрение по такому сценарию занимает от двух недель до полугода в зависимости от проекта и может стоить от 500 000 рублей. Но тут ребята большую часть работы сделали сами, а разработчик только помог с планом «переезда». Работа заняла несколько дней: за это время разработчик сделал анализ того, что ребята уже сделали для создания общего кода, и составили план переноса бизнес-логики.
План для этого проекта состоял из следующих шагов:
- Настроить поддержку Kotlin Multiplatform в gradle-модуле.
- Перенести платформенно-независимые классы в commonMain.
- Заменить библиотеки JVM/Android на мультиплатформенные аналоги.
- Перенести в commonMain JVM-зависимый код, который требует изменений.
- Перенести в commonMain Android-зависимый код, который требует изменений.
- Сделать публичные интерфейсы компонентов общей логики удобными для обеих платформ.
Дальше команда «Профи» сама смогла использовать результаты этого ревью в своей работе.
Сценарий 2. Ваша команда успешно опробовала KMM, и вам нужна только консультация экспертов
Такой вид работы расскажу на примере зарубежного сервиса для просмотра футбола, который также работает на iOS и Android.
К проекту разработчик подключился на этапе запуска. Сначала ребята самостоятельно сделали общую логику и подключили ее к своим Android- и iOS-приложениям, затем пришли сторонней компании за экспертизой.
Как шел процесс между заказчиком и подрядчиком:
- Подписали NDA.
- Проанализировали проект.
- Дали рекомендации и обучающие материалы.
- Ребята внедрили часть рекомендаций и обратились за пояснением по другой части.
- Непонятные моменты были разобрали на созвоне между заказчиком и подрядчиком.
Как быстро сделали и сколько это стоило. На анализ и составление плана обычно уходит от двух до пяти дней, а стоимость начинается от 100 000 рублей. Аудит для этого проекта занимает три дня и может стоить около 100 000 рублей.
Вот некоторые рекомендации, которые разработчик давал для этого проекта:
- Упростить gradle-конфигурацию с помощью официального плагина и наших открытых библиотек.
- Включить иерархическую структуру проекта, чтобы использовать подсказки и автодополнения от IDEA в iosMain.
- Включить Kotlin/Native-кэш, потому что он значительно ускоряет время debug-сборки.
- Для ускорения сборки делать экспорт модулей не транзитивно, а указывать его только для необходимых модулей и библиотек.
- Заменить написание ручных оберток над корутинами на автогенерируемые, чтобы получать на стороне Swift аналогичные асинхронные методы, но на основе замыканий.
- Настроить заморозку объектов сразу в init, чтобы избежать потенциальных ошибок во время работы нескольких потоков.
- Исправить ошибку запуска iOS-приложения: некорректно работал один gradle-плагин. Оказалось, что gradle-задача podspec была настроена на статичный фреймворк, но последняя сборка фреймворка была динамичной. Чтобы пофиксить это, мы предложили сделать так, чтобы podspec генерировал фиктивный динамический фреймворк, и тогда все будет компилироваться.
Сценарий 3. Есть приложение на Android, и срочно нужно выпустить версию на iOS, не останавливая разработку, а затем объединить бизнес-логику обоих приложений
Расскажу на основе кейса приложения для совместных игр онлайн и общения. Общий код был сделан на основе версии на Android, который уже была написан на Kotlin и был создан сразу с интеграцией с iOS-приложением. В результате клиент получил два приложения с общей логикой, не прерывая работу над функционалом Android-приложения.
Как шел процесс между заказником и подрядчиком:
- Подписали NDA.
- Проанализировали проект.
- Составили индивидуальный план внедрения KMM.
- Создали общий код для второй платформы с заделом на интеграцию с первой платформой, чтобы клиент сам мог интегрировать Android-версию.
Как быстро сделали и сколько это стоило. Это самый дорогой и сложный вид услуг — работа может стоить от 1 млн рублей. Анализ и составление плана занимает обычно так же от двух до пяти дней. На создание приложения с общим кодом может уйти от одного до шести месяцев, а на интеграцию с первой платформой — от двух недель до нескольких месяцев. В этом проекте анализ задачи занял три дня, а разработка — три месяца. При этом клиент уложился в бюджет в 3 млн рублей.
А что по статистике разработчики переносят в общий код? 76% разработчиков используют сразу на двух платформах модель данных, 66% — сетевое взаимодействие и 65% — сериализацию данных.
Еще статистика напоследок: у 45% разработчиков есть больше одного проекта на Kotlin Multiplatform.
Рубрики
Интересное:
Новости отрасли:
Все новости:
Публикация компании
Контакты
Социальные сети
Рубрики