Что такое кроссплатформенная разработка
Подкаст

Что такое кроссплатформенная разработка

Одно приложение для всех устройств
Что такое кроссплатформенная разработка

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

Многие крупные компании используют кроссплатформенную разработку — например, BMW, Toyota, Tesla, Google Ads, Alibaba, Яндекс (Драйв, Афиша, Практикум и другие сервисы). Это оптимальный вариант для клиентских приложений, где важна скорость внесения изменений и единый UX.

Разработать такое универсальное приложение за один раз звучит очень удобно — и это правда. Но так было не всегда.

Сначала был один вариант — нативная разработка, когда программисты пишут код для каждой операционной системы отдельно. Отправной точкой кроссплатформенной разработки считается проект PhoneGap (позже — Apache Cordova). Идея была в том, чтобы не разрабатывать отдельный сервис, а упаковать в мобильное приложение сам сайт. Решение сработало, но интерфейс все равно ощущался как веб-страница, а производительность подводила.

Большой прорыв случился, когда появились платформы React Native и Flutter. Они позволили создавать приложения, которые выглядят и ощущаются как нативные, работают быстро и одинаково хорошо на разных устройствах. Сегодня они считаются главными инструментами в кроссплатформенной разработке.

Подробнее о типах разработки читайте в статье.

В чем прелесть кроссплатформенной разработки?

Вместо того, чтобы вести несколько отдельных проектов под iOS, Android и другие ОС, разработчики пишут одну кодовую базу. Это и есть главное преимущество.

Плюсы одного кроссплатформенного проекта вместо нескольких нативных:

  • Чаще всего это дешевле за счет того, что над проектом работает одна команда, а не несколько одновременно — как над приложением для разных ОС.
  • 1916х1080 — копия.jpg
  • На разработку и тестирование уходит меньше времени.
  • Проще вносить изменения. Достаточно сделать это один раз, и они отобразятся везде и сразу.
  • Приложение выглядит и работает одинаково — на 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 месяцев?
  • Важно ли для нас ускорить развитие продукта без расширения команды?
Обсудите статью в нашем телеграм-канале