Что такое кроссплатформенная мобильная разработка?
Сегодня многие компании сталкиваются с задачей создания мобильных приложений для нескольких платформ, а именно для Android и iOS. Поэтому решения для кроссплатформенной мобильной разработки стали одним из самых популярных трендов в разработке программного обеспечения.
Согласно последним данным о магазинах приложений, в Google Play Store размещено более 2,3 миллиона приложений, а в Apple App Store — около 2,2 миллиона. Android и iOS продолжают доминировать в распространении и использовании мобильных приложений во всём мире.
Как создать мобильное приложение, которое сможет охватить пользователей Android и iOS? В этой статье вы узнаете, почему всё больше мобильных инженеров выбирают кроссплатформенный, или мультиплатформенный, подход к мобильной разработке.
Кроссплатформенная мобильная разработка: определение и решения
Кроссплатформенная мобильная разработка (также известная как мультиплатформенная мобильная разработка) — это подход, который позволяет командам создавать приложения для нескольких платформ на основе единой общей кодовой базы. Вместо разработки и поддержки двух совершенно отдельных нативных приложений инженеры пишут общий код, который можно повторно использовать на разных платформах.
Современные кроссплатформенные фреймворки позволяют разработчикам единожды написать большую часть логики приложения и использовать её как для Android, так и для iOS, значительно сокращая дублирование работы и ускоряя выпуск продукта. Например, Kotlin Multiplatform позволяет повторно использовать всю бизнес-логику, а с Compose Multiplatform — даже код пользовательского интерфейса на разных платформах.
Такой высокий уровень совместного использования кода помогает обеспечить единообразный пользовательский опыт на разных платформах, сокращает дублирование усилий при разработке и снижает долгосрочные затраты на поддержку. При этом современные фреймворки позволяют разработчикам при необходимости использовать нативные API и специфические возможности платформ.
Объединяя повторное использование кода с нативной интеграцией, кроссплатформенная разработка предлагает сбалансированное решение для компаний, стремящихся эффективно охватить пользователей Android и iOS.
Различные подходы к разработке мобильных приложений
За последнее десятилетие кроссплатформенные решения значительно эволюционировали. Ранние гибридные инструменты, такие как Apache Cordova и Ionic, позволяли совместно использовать веб-код на разных платформах, но часто обеспечивали ограниченную производительность и неудовлетворительный пользовательский опыт. Современные компилируемые фреймворки, такие как Kotlin Multiplatform и Flutter, обеспечивают производительность, близкую к нативной, широкие возможности повторного использования кода и более глубокий доступ к возможностям нативных платформ.
Есть несколько основных способов создать приложение для Android и iOS:
1. Отдельные нативные приложения для каждой операционной системы
При создании нативных приложений разработчики создают приложение для конкретной операционной системы и используют инструменты и языки программирования, разработанные специально для одной платформы: Kotlin или Java для Android, Swift или Objective-C для iOS.
Эти инструменты и языки предоставляют доступ к функциям и возможностям конкретной ОС и позволяют создавать отзывчивые приложения с интуитивно понятным интерфейсом. Но если вы хотите охватить пользователей Android и iOS, вам придётся создавать отдельные приложения, а это требует много времени и усилий.
2. Прогрессивные веб-приложения (PWA)
Прогрессивные веб-приложения объединяют функции мобильных приложений с решениями, используемыми в веб-разработке. Проще говоря, они сочетают в себе веб-сайт и мобильное приложение. Разработчики создают PWA с помощью веб-технологий, таких как JavaScript, HTML, CSS и WebAssembly.
Веб-приложения не требуют отдельной упаковки или распространения и могут публиковаться в интернете. Они доступны через браузер на компьютере, смартфоне и планшете, и их не нужно устанавливать через Google Play или App Store.
Недостаток такого подхода заключается в том, что пользователи не могут использовать все возможности своего устройства во время работы с приложением, например контакты, календарь, телефон и другие ресурсы. В результате пользовательский опыт оказывается ограниченным. По производительности приложениям лидируют нативные приложения.
3. Кроссплатформенные приложения
Как упоминалось ранее, мультиплатформенные приложения предназначены для одинаковой работы на разных мобильных платформах. Кроссплатформенные фреймворки позволяют писать совместно используемый и повторно применяемый код для разработки таких приложений.
У этого подхода есть несколько преимуществ, например экономия времени и средств. В следующем разделе мы подробнее рассмотрим плюсы и минусы кроссплатформенной мобильной разработки.
4. Гибридные приложения
Просматривая сайты и форумы, вы можете заметить, что некоторые используют термины кроссплатформенная мобильная разработка и гибридная мобильная разработка как взаимозаменяемые. Однако это не совсем верно.
При разработке кроссплатформенных приложений мобильные инженеры могут написать код один раз, а затем повторно использовать его на разных платформах. Разработка гибридных приложений, напротив, — это подход, объединяющий нативные и веб-технологии. Он требует встраивания в нативное приложение кода, написанного на языке веб-разработки, например HTML, CSS или JavaScript. Это можно сделать с помощью таких фреймворков, как Ionic Capacitor и Apache Cordova, используя дополнительные плагины для доступа к нативным функциям платформ.
Единственное сходство кроссплатформенной и гибридной разработки — возможность совместно использовать код. По производительности гибридные приложения уступают нативным. Поскольку в гибридных приложениях используется единая кодовая база, некоторые функции, специфичные для одной ОС, могут некорректно работать на других.
Нативная или кроссплатформенная разработка приложений: давний спор
Спор о нативной и кроссплатформенной разработке в техническом сообществе всё ещё не разрешён. Обе технологии постоянно развиваются и имеют свои преимущества и ограничения.
Некоторые эксперты по-прежнему предпочитают нативную мобильную разработку мультиплатформенным решениям, считая высокую производительность и более качественный пользовательский опыт нативных приложений одними из важнейших преимуществ.
Однако многим современным компаниям необходимо быстрее выпускать функции одновременно для Android и iOS. Здесь могут помочь технологии кроссплатформенной разработки, например Kotlin Multiplatform. Такие компании, как Duolingo, уже видят результат. Как отмечает Джон Родригес из команды Client Platform:
Подходит ли вам кроссплатформенная мобильная разработка?
Кроссплатформенную разработку часто выбирают не только по техническим причинам, но и благодаря её преимуществам для бизнеса. Совместное использование кода на разных платформах позволяет командам сократить дублирование работы при разработке, ускорить выпуск функций и упростить долгосрочную поддержку.
Преимущества кроссплатформенной мобильной разработки
Есть множество причин, по которым компании выбирают этот подход вместо других вариантов:
1. Повторное использование кода
При кроссплатформенном программировании мобильным инженерам не нужно писать новый код для каждой операционной системы. Использование единой кодовой базы позволяет разработчикам сократить время на повторяющиеся задачи, такие как вызовы API, хранение данных, сериализация данных и внедрение аналитики.
Такие технологии, как Kotlin Multiplatform, позволяют реализовать уровни данных, бизнес-логики и представления приложения только один раз. Кроме того, внедрять KMP можно постепенно. Выберите фрагмент логики, который часто меняется и обычно рассинхронизируется, например фильтрацию или сортировку, сделайте его кроссплатформенным, а затем подключите к проекту в виде общего модуля.
В JetBrains мы регулярно проводим опросы о Kotlin Multiplatform и спрашиваем участников сообщества, какие части кода они совместно используют на разных платформах.
2. Экономия времени
Поскольку значительную часть логики приложения можно совместно использовать на разных платформах, разработчики могут сократить дублирование функциональности. Это уменьшает трудозатраты на разработку и позволяет командам быстрее выпускать новые функции для обеих платформ.
3. Эффективное управление ресурсами
Единая кодовая база помогает командам эффективнее управлять ресурсами. Вместо поддержки отдельных кодовых баз и процессов разработки для Android и iOS команды могут совместно работать над общими компонентами и сосредоточиться на создании функций продукта, а не на дублировании работы.
4. Привлекательные возможности для разработчиков
Многие мобильные инженеры считают современные кроссплатформенные технологии привлекательной частью технологического стека продукта. Разработчики могут терять интерес к работе, если им приходится выполнять повторяющиеся рутинные задачи, например разбирать JSON. Новые технологии и задачи, напротив, могут вернуть им интерес, мотивацию и радость от работы. Таким образом, современный технологический стек может упростить не только подбор специалистов в команду мобильной разработки, но и поддержание их вовлечённости и энтузиазма на протяжении длительного времени.
5. Возможность охватить более широкую аудиторию
Вам не придётся выбирать между платформами. Поскольку приложение совместимо с несколькими операционными системами, вы сможете удовлетворить потребности пользователей Android и iOS и максимально расширить аудиторию.
6. Более быстрый выход на рынок и настройка
Поскольку вам не нужно создавать отдельные приложения для разных платформ, вы сможете гораздо быстрее разработать и запустить продукт. Кроме того, если приложение нужно настроить или преобразовать, программистам будет проще внести небольшие изменения в отдельные части кодовой базы. Это также позволит быстрее реагировать на отзывы пользователей.
Сложности кроссплатформенного подхода к разработке
У любого решения есть свои ограничения. Некоторые представители технического сообщества утверждают, что кроссплатформенное программирование по-прежнему сталкивается с проблемами производительности. Кроме того, руководители проектов могут опасаться, что стремление оптимизировать процесс разработки негативно скажется на пользовательском опыте приложения.
Однако благодаря совершенствованию базовых технологий кроссплатформенные решения становятся всё более стабильными, адаптивными и гибкими.
Ещё одно распространённое опасение связано с тем, что мультиплатформенная разработка не позволяет без проблем поддерживать нативные функции платформ. Однако в Kotlin Multiplatform можно использовать ожидаемые и фактические объявления Kotlin, чтобы предоставить мультиплатформенному приложению доступ к специфичным для платформ API. Ожидаемые и фактические объявления позволяют указать в общем коде, что вы «ожидаете» возможности вызывать одну и ту же функцию на разных платформах, а затем предоставить её «фактические» реализации. Благодаря совместимости Kotlin с Java и Objective-C/Swift эти реализации могут взаимодействовать с любыми библиотеками, специфичными для конкретной платформы.
По мере развития современных мультиплатформенных фреймворков мобильные инженеры получают всё больше возможностей для создания интерфейсов, похожих на нативные. Если приложение написано хорошо, пользователь не заметит разницы. Однако качество продукта во многом будет зависеть от выбранных вами инструментов для кроссплатформенной разработки.
Сравнение кроссплатформенных фреймворков
Несколько фреймворков позволяют разработчикам создавать кроссплатформенные мобильные приложения на основе общей кодовой базы. Все они призваны сократить дублирование работы при разработке для Android и iOS, но различаются языками программирования, подходами к отображению, характеристиками производительности и зрелостью экосистемы.
В обзоре ниже сравниваются некоторые из наиболее широко используемых сегодня кроссплатформенных фреймворков.
Язык |
Совместное использование кода на разных платформах |
Зрелость сообщества |
Примеры приложений |
|
|---|---|---|---|---|
Kotlin Multiplatform |
Kotlin |
Гибкое совместное использование бизнес-логики и пользовательского интерфейса на разных платформах с сохранением нативного кода платформ там, где это необходимо. |
Быстро развивается |
Duolingo, McDonald's, Forbes, Philips, H&M, Bolt |
Flutter |
Dart |
Большая часть логики приложения и пользовательского интерфейса совместно используется в рамках единой кодовой базы на Dart. |
Большое и зрелое |
eBay Motors, Alibaba, Google Pay, приложения ByteDance |
React Native |
JavaScript, TypeScript |
Бизнес-логика и компоненты пользовательского интерфейса совместно используются на разных платформах — от отдельных функций до полноценных приложений. |
Большое и зрелое |
Microsoft Office, Teams, Xbox Game Pass; Facebook, Instagram |
.NET MAUI |
C#, XAML |
Бизнес-логика и пользовательский интерфейс совместно используются на разных платформах в рамках единой кодовой базы на C#. |
Устоявшийся |
NBC Sports Next, Escola Agil, Azure App |
Ionic |
JavaScript |
Большая часть логики приложения и пользовательского интерфейса совместно используется в единой кодовой базе на веб-технологиях, а доступ к нативным функциям обеспечивается через плагины. |
Зрелый |
T-Mobile, BBC (детские приложения), EA Games |
NativeScript |
JavaScript, TypeScript |
Большая часть логики приложения и пользовательского интерфейса совместно используется на разных платформах в рамках единой кодовой базы на JavaScript или TypeScript. |
Устоявшийся |
Daily Nanny, Groov, Breethe |
Также можно ознакомиться с более подробным обзором самых популярных кроссплатформенных технологий.
Kotlin Multiplatform
Kotlin Multiplatform позволяет командам совместно использовать логику приложений на разных платформах с помощью Kotlin. С помощью Compose Multiplatform разработчики могут совместно использовать до 100% кода приложения, включая пользовательский интерфейс, сохраняя при этом возможность интеграции с нативными API там, где это необходимо. Такой подход позволяет командам создавать приложения для Android, iOS, настольных компьютеров и веба на основе единой кодовой базы, сохраняя нативные возможности.
Flutter
Flutter — это созданный Google кроссплатформенный фреймворк, использующий язык программирования Dart и собственный движок рендеринга. Поскольку Flutter управляет уровнем отображения пользовательского интерфейса, он обеспечивает единообразный внешний вид и высокую производительность на разных платформах. Подробно изучите Kotlin Multiplatform и Flutter, чтобы лучше понять их возможности и определить, что подойдёт для вашего кроссплатформенного проекта.
React Native
React Native позволяет разработчикам создавать мобильные приложения с помощью JavaScript и библиотеки React. Он отображает нативные компоненты пользовательского интерфейса, выполняя логику в среде выполнения JavaScript, поэтому пользуется популярностью среди команд с опытом веб-разработки. Ознакомьтесь с обзором Kotlin Multiplatform и React Native — он поможет выбрать решение, подходящее вашему продукту и команде.
.NET MAUI
.NET MAUI — это кроссплатформенный фреймворк Microsoft для создания нативных мобильных приложений и приложений для настольных компьютеров на C# и в экосистеме .NET. Он позволяет разработчикам создавать приложения для Android, iOS, macOS и Windows на основе единой кодовой базы и тесно интегрируется с такими инструментами, как Visual Studio.
Ionic
Ionic — это гибридный мобильный фреймворк, использующий веб-технологии, такие как HTML, CSS и JavaScript. Приложения работают во встроенном WebView и получают доступ к функциям устройства через плагины или нативные мосты, поэтому Ionic хорошо подходит командам с большим опытом веб-разработки.
NativeScript
NativeScript — это фреймворк с открытым исходным кодом для создания нативных мобильных приложений на JavaScript или TypeScript. Он отображает настоящие нативные компоненты пользовательского интерфейса и предоставляет прямой доступ к API платформ, позволяя разработчикам создавать кроссплатформенные приложения с нативной производительностью и пользовательским опытом.
Примеры использования Kotlin Multiplatform в реальных проектах
Duolingo, McDonald's, Netflix, 9GAG, VMware, Cash App, Philips и многие другие крупные компании всё чаще внедряют Kotlin Multiplatform, чтобы воспользоваться преимуществами такого подхода, сохраняя нативную производительность и специфичный для платформ пользовательский опыт. Некоторые из них повышают стабильность приложений, совместно используя отдельные важные фрагменты существующего кода на Kotlin. Другие стремятся максимально повторно использовать код без ущерба для качества приложений и совместно используют всю логику приложений на мобильных устройствах, компьютерах, в вебе и на телевизорах, сохраняя нативные интерфейсы на каждой платформе. О преимуществах этого подхода свидетельствует опыт компаний, которые уже его внедрили.
Duolingo
Duolingo использует Kotlin Multiplatform, чтобы ускорить разработку для мобильных платформ. Компания каждую неделю выпускает обновления для Android и iOS, которыми пользуются более 40 миллионов активных пользователей ежедневно в 176 странах. По словам команды, Kotlin Multiplatform всё больше помогает быстрее выпускать функции на разных платформах. Посмотрите полное видео.
McDonald’s
Команда Umain, которая разрабатывает приложение McDonald’s, сначала внедрила Kotlin Multiplatform для функции оплаты, а затем распространила его использование на всё мобильное приложение. После внедрения общего кода на Kotlin команда сообщила о сокращении числа сбоев и повышении производительности на разных платформах. Переход также помог объединить отдельные команды Android и iOS в единую команду мобильной разработки. Посмотрите полное видео.
Forbes
Совместно используя более 80% логики для iOS и Android, Forbes теперь одновременно выпускает новые функции на обеих платформах, сохраняя при этом возможность настраивать их с учётом особенностей каждой платформы. Это позволяет команде быстрее внедрять инновации и реагировать на потребности рынка. Прочитайте историю целиком.
Также можно узнать, почему разработчикам стоит рассмотреть возможность использования Kotlin Multiplatform в существующих или новых проектах и почему эта технология продолжает набирать популярность.
Часто задаваемые вопросы
Вопрос: Что такое кроссплатформенная мобильная разработка?
Ответ: Кроссплатформенная мобильная разработка (также называемая разработкой кроссплатформенных приложений) — это подход, который позволяет создавать приложения для нескольких операционных систем (например, iOS и Android) на основе единой кодовой базы. Совместное использование кода на разных платформах позволяет разработчикам сократить затраты и быстрее выйти на рынок.
Вопрос: Как выбрать кроссплатформенный фреймворк?
Ответ: Выбирайте кроссплатформенный фреймворк с учётом навыков команды, требований проекта и долгосрочных целей продукта. Например, Kotlin Multiplatform особенно привлекателен для команд, которым важны производительность, удобство сопровождения и нативный внешний вид, особенно при использовании Compose Multiplatform для совместного использования кода пользовательского интерфейса. Команды с опытом работы с JavaScript и React часто предпочитают React Native, особенно для быстрого прототипирования. .NET MAUI — отличный выбор для разработчиков, работающих в экосистеме .NET.
Вопрос: Чем Kotlin Multiplatform отличается от Compose Multiplatform?
Ответ: Kotlin Multiplatform — это базовая технология, позволяющая совместно использовать код на разных платформах, включая Android, iOS, настольные компьютеры, веб и серверы. Она ориентирована на повторное использование кода и не заменяет нативный пользовательский интерфейс, если вы сами этого не захотите. Compose Multiplatform — это необязательный UI-фреймворк, построенный на основе Kotlin Multiplatform. Он позволяет совместно использовать пользовательский интерфейс на разных платформах с помощью современного декларативного подхода, похожего на Jetpack Compose для Android. С его помощью можно создавать привлекательные адаптивные интерфейсы для Android, iOS, настольных компьютеров и веба на основе единой кодовой базы.
Вопрос: Какой фреймворк для мобильной разработки наиболее популярен?
Ответ: Среди популярных фреймворков для кроссплатформенной мобильной разработки — Kotlin Multiplatform, Flutter, React Native, .NET MAUI и другие. Ознакомьтесь с обзором самых популярных кроссплатформенных технологий, чтобы найти вариант, который лучше всего соответствует вашим потребностям.
Если вашей команде нужна помощь во внедрении новой мультиплатформенной технологии, рекомендуем ознакомиться с нашим руководством Как внедрить мультиплатформенную разработку в команде.
Заключение
По мере развития кроссплатформенных решений их ограничения становятся всё менее заметными на фоне предоставляемых ими преимуществ. На рынке доступны различные технологии, подходящие для разных рабочих процессов и требований. Каждый из рассмотренных в этой статье инструментов предоставляет широкие возможности командам, которые рассматривают переход на кроссплатформенную разработку.
В конечном счёте, чтобы определить наиболее подходящее для вас решение, необходимо тщательно проанализировать конкретные потребности бизнеса, цели и задачи, а также чётко сформулировать, чего вы хотите добиться с помощью приложения.
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/multiplatform/cross-platform-mobile-development.html