Что такое кроссплатформенная разработка
Одно приложение для всех устройств
Кроссплатформенная разработка — это подход, при котором можно разработать приложение сразу для нескольких операционных систем — iOS, Android, Авроры и других. Основа приложения остается общей, нужно только адаптировать небольшие части для каждой ОС.
Многие крупные компании используют кроссплатформенную разработку — например, BMW, Toyota, Tesla, Google Ads, Alibaba, Яндекс (Драйв, Афиша, Практикум и другие сервисы). Это оптимальный вариант для клиентских приложений, где важна скорость внесения изменений и единый UX.
Разработать такое универсальное приложение за один раз звучит очень удобно — и это правда. Но так было не всегда.
Сначала был один вариант — нативная разработка, когда программисты пишут код для каждой операционной системы отдельно. Отправной точкой кроссплатформенной разработки считается проект PhoneGap (позже — Apache Cordova). Идея была в том, чтобы не разрабатывать отдельный сервис, а упаковать в мобильное приложение сам сайт. Решение сработало, но интерфейс все равно ощущался как веб-страница, а производительность подводила.
Большой прорыв случился, когда появились платформы React Native и Flutter. Они позволили создавать приложения, которые выглядят и ощущаются как нативные, работают быстро и одинаково хорошо на разных устройствах. Сегодня они считаются главными инструментами в кроссплатформенной разработке.
Подробнее о типах разработки читайте в статье.
В чем прелесть кроссплатформенной разработки?
Вместо того, чтобы вести несколько отдельных проектов под iOS, Android и другие ОС, разработчики пишут одну кодовую базу. Это и есть главное преимущество.
Плюсы одного кроссплатформенного проекта вместо нескольких нативных:
- Чаще всего это дешевле за счет того, что над проектом работает одна команда, а не несколько одновременно — как над приложением для разных ОС.
- На разработку и тестирование уходит меньше времени.
- Проще вносить изменения. Достаточно сделать это один раз, и они отобразятся везде и сразу.
- Приложение выглядит и работает одинаково — на iPhone, Android, планшете и других устройствах. Это важно с точки зрения маркетинга — пользователь может менять гаджеты и не замечать разницы.
- Одна команда — меньше рисков. Когда все сосредоточено в одном месте, проще планировать, общаться и контролировать работу.

А минусы будут?
Раньше кроссплатформенная разработка уступала нативной по двум существенным параметрам — графика и производительность. Кроссплатформенные фреймворки давали меньше свободы для дизайна, приложения могли зависать на сложных процессах, видео в высоком разрешении, дополненной реальности.
Сегодня все изменилось. Например, приложения на Flutter компилируются в машинный код — как и нативные. Это дает высокую скорость выполнения — с помощью кроссплатформенной разработки можно создавать приложения с дополненной реальностью, сложной графикой, поддержкой Bluetooth (например, в приложении для умного дома или фитнеса) и другими нестандартными функциями.
Кроссплатформенные приложения — настоящая находка! Единый код, минимум различий между версиями под разные платформы, максимум скорости в разработке и выпуске обновлений — это только часть их преимуществ как для бизнеса, так и для разработчика. Конечно, есть и недостатки, например, меньшая производительность, так как не все кроссплатформенные технологии могут поддерживать тот же уровень, что и чистый натив. Но прогресс не стоит на месте, и уже сейчас Flutter-приложения выдают отличный результат по производительности.
Анна Ахлестова, Flutter Team Lead FriflexС дизайном тоже все стало лучше. Например, Flutter дает полный контроль над интерфейсом и позволяет создавать сложные кастомные, анимационные и даже 3D-решения.
Flutter не использует нативные элементы ОС — все отрисовывается с нуля с помощью собственного движка Skia (скоро его сменит Impeller). Это позволяет точно повторять фирменный стиль на всех платформах, настраивать любой элемент интерфейса от шрифта до поведения кнопки, а также использовать сложные сетки, градиенты, маски, тени, стили. Последние трудно реализовать даже в React Native — Flutter здесь нет равных.
С недавних версий Flutter поддерживает работу с шейдерами — это программы, которые управляют визуальными эффектами на уровне пикселей. С их помощью можно делать яркие и необычные визуальные эффекты прямо внутри приложения, без привлечения игровых движков или тяжелых библиотек. Это особенно полезно, если важен wow-эффект.
Фреймворки для кроссплатформенной разработки
Среди самых популярных кроссплатформенных фреймворков сегодня — React Native, Jetpack Compose и Flutter.
Разработка на React Native ведется на языке JavaScript. Фреймворк часто используют, если на этом же языке сделан сайт или другой веб-сервис, с которым связано приложение. Еще React Native подходит, если проект не требует сложной кастомизации интерфейса и нужно быстро выйти на рынок.
Jetpack Compose изначально — нативный фреймворк для создания UI под Android. Он полностью интегрирован в Android-систему. Но расширение Jetpack Compose Multiplatform (Compose MPP) делает фреймворк кроссплатформенным: Android — основная платформа, desktop (Windows, macOS, Linux) — поддерживается, веб — экспериментально, iOS — в разработке.
На Flutter разработчики пишут код на языке Dart. Благодаря собственному движку, Flutter не зависит от элементов операционных систем и позволяет полностью контролировать внешний вид приложения. Это платформа, с которой удобно масштабироваться на web, desktop и другие устройства — все из одной кодовой базы.
В двух словах:
- React Native — можно быстро запуститься, если у вас уже есть веб-команда, которая работала, например, над сайтом.
- Jetpack Compose — подойдет, если уже есть Android-команда на языке Kotlin. Можно использовать общий код для Android, desktop и веба без перехода на другой стек.
- Flutter — больше контроля над дизайном и скоростью, хорошая база для масштабирования.
Мы работаем с Flutter. Выбрали этот фреймворк из-за гибкости, стабильности и скорости. Среди проектов, которые мы разработали на Flutter — приложения для Бристоля, Магнита и Виктории.
Расскажите о проекте — мы поможем понять, какая разработка подойдет больше.
СвязатьсяЧек-лист для внутреннего аудита
- Есть ли у нас отдельные команды или специалисты под iOS и Android?
- Сложно ли нам находить мобильных разработчиков для разных ОС?
- Хватает ли ресурсов, чтобы поддерживать оба приложения на одинаковом уровне?
- Не перегружена ли команда из-за того, что нужно дублировать задачи для каждой ОС?
- Бывает ли, что одно и то же изменение нужно вносить отдельно для iOS и Android?
- Сколько мы тратим времени и бюджета на поддержку двух отдельных кодовых баз?
- Бывают ли ошибки в работе приложения из-за различий между версиями на iOS и Android?
- Запуск новых функций откладывается из-за того, что их нужно готовить отдельно для каждой платформы?
- Бывает ли, что обновление выходит на одной из платформ с задержкой?
- Отличается ли поведение или интерфейс приложения на разных устройствах? Жаловались ли на это пользователи?
- Планируем ли мы запуск веб-версии или расширение на другие платформы в ближайшие 6-12 месяцев?
- Важно ли для нас ускорить развитие продукта без расширения команды?