Главная/Блог/Кроссплатформенная разработка мобильных приложений: технологии, плюсы, минусы, отличия от нативной
cover

Кроссплатформенная разработка мобильных приложений: технологии, плюсы, минусы, отличия от нативной

Сегодня существует множество устройств и операционных систем. Windows, macOS, Android, iOS, о которых вы слышали — только верхушка айсберга. Есть и более нишевые: различные дистрибутивы Linux, включая Ubuntu, Arch и даже отечественная «Заря».

Раньше под каждую систему приходилось писать отдельное приложение. Это было дорого, долго и неудобно.

Чтобы решить эту проблему, придумали кроссплатформенную разработку. О ней и поговорим в сегодняшней статье.

Вы узнаете:

  • что из себя представляет кроссплатформенная разработка;
  • в чём преимущества и недостатки кроссплатформенного подхода;
  • какие в ней используются инструменты и чем они отличаются;
  • как осознанно выбрать технологию под ваш проект.

Поехали! 

Разработаем мобильное приложение для Android и iOS под ключ
Узнать подробности

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

Кроссплатформенная разработка — подход, при котором мы пишем код один раз, а потом компилируем его для нужного нам устройства и ОС (операционной системы). 

В результате кроссплатформенное приложение запустится и в браузере, и на iOS и на Android.

Для этого разработчики используют универсальные инструменты и фреймворки. Самые популярные:

  • React Native от Facebook;
  • Flutter от Google;
  • Ionic от Drifty.

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

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

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

Платформа«Родные» языки
ВебJavaScript
iOSSwift, Objective-C
AndroidKotlin, Java

Так, приложение, написанное на Swift, не запустится на Android-устройстве, а приложение на Kotlin не запустится на айфоне.

Кажется, зачем писать под каждую платформу отдельно, когда можно проделать работу один раз и запустить приложение везде? 

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

Среди таких преимуществ:

  1. нативные приложения более производительные — анимации в них не дергаются, страницы открываются и наполняются контентом без долгой прогрузки;
  2. работают стабильнее — пользователь реже сталкивается с «крашами» и зависаниями интерфейса;
  3. они основаны на языках, которые разрабатывают создатели самих операционных систем — Google и Apple. Это значит, что вы не попадёте в ситуацию, когда разработчик решил прекратить поддержку фреймворка, оставив вас с устаревшим приложением, которое надо переписывать. Такая история случилась с популярным кроссплатформенным решением Xamarin, который закрыл проект в мае 2024;
  4. в них легче реализовать доступ к аппаратным функциям устройства.

Последний пункт особенно важен, если коренная функциональность проекта задействует микрофон, камеру, GPS, акселерометр или Lidar-сенсор.

Например, приложение Voice2Med Mobile, которое мы разработали, широко использует микрофон — без не не работала бы коренная функциональность проекта.

В приложении врачи надиктовывают результаты обследования, а система распознавания речи в реальном времени преобразует аудиопоток в текст. Это потребляет много аппаратных ресурсов.

Voice2Med
Интерфейс Voice2Med Mobile

Из общения с заказчиком мы знали наперед, что приложение будет запускаться только на Android-устройствах, причем иногда простейших моделях. Поэтому кроссплатформенность отступила на второй план перед производительностью и стабильностью — особенно важной в медицинской сфере, где недопустимы сбои, ошибки, «зависания», и низкая скорость работы.

В результате для проекта мы выбрали нативный подход и «родные» технологии для операционной системы Android: язык Kotlin и Android SDK. Подробнее о том, как проходила разработка, рассказали в кейсе

А ниже — про преимущества и недостатки кроссплатформенного подхода.

Преимущества и недостатки кроссплатформенной разработки 

Давайте разберемся, в чём силы и слабости кроссплатформы.

Преимущества

Вместо нескольких команд разработчиков под каждую платформу вам хватит одной. Это значит, что вы потратите на 40%+ меньше денег и времени на проект.

Вы сможете быстрее вывести приложение на рынок. Простой кроссплатформенный проект делается за 3 месяца для двух операционных систем, а нативный — примерно за 4–6 месяцев, если приложение нужно под две операционные системы и 2–3 месяца — если под одну.

Ваше приложение сразу доступно пользователям Android, iOS, Windows, macOS и Linux. Вы сможете охватить весь рынок смартфонов и настольных ПК, сделав одно приложение и частично адаптировав код под разные операционные системы.

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

Недостатки

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

Доступ к специфическим функциям устройства ограничен. Могут возникнуть сложности с реализацией, если ваше приложение сильно завязано на работу с GPS, NFC или другими аппаратными функциями.

Сложнее создать «нативный» интерфейс. У каждой платформы есть своя дизайн-система (Material Design у Android и Human Interface Guidelines у iOS). 

Она отрисовывается встроенным в ОС механизмами рендеринга, которые стандартизируются и автоматически обновляются с новыми версиями системы.

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

У такого подхода несколько минусов:

  • иногда разработчики фреймворка не совсем верно воссоздают компоненты. Возникают различия в цвете, размере теней или толщине границ. Конечно, всё это можно исправить в разработке, но такая лишняя работа съедает время вашей команды;
  • дизайн компонентов не обновляется автоматически, когда выходит новая версия системы. Например, Android 12 перешел новый дизайн-язык — Material You, который очень сильно отличается от дизайна Android 11.

Из-за этого некоторые компоненты могут ощущаться чужеродными на смартфоне. 

Хорошая новость в том, что этой проблемы нет на React Native и Flutter — эти фреймворки умеют работать с нативным движком.

Фреймворки для кроссплатформенной разработки

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

React Native

React Native — фреймворк от Facebook, вышедший в 2015 году, одна из самых популярных платформ для разработки кроссплатформенных приложений.

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

Хотя код пишется на веб-языке, фреймворк задействует движок отрисовки, встроенный в ОС. Так обеспечивается полное соответствие нативному дизайну и высокая производительность.

React Native используется в популярных мобильных приложениях и подходит для проектов любого масштаба.

Известные приложения, написанные на React Native: Facebook, Skype, Instagram, Pinterest, Discord, SalesForce.

Преимущества:

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

Недостатки:

  • производительность уступает нативным приложениям — особенно заметно при работе со сложной анимацией или в ресурсоемких задачах;
  • часть функций реализуются через npm-пакеты, которые могут иметь баги или перестать поддерживаться.

Подойдет когда:

Вам нужно быстро вывести на рынок MVP продукта. У вас в фокусе гибкость и стремительное итерирование.

Воспользуйтесь преимуществами лучших кроссплатформ для вашего проекта!
Отправить ТЗ на оценку

Flutter

Flutter — фреймворк от Google. Он использует язык программирования Dart. Это объектно-ориентированный язык с быстрой компиляцией кода.

Ключевая особенность Flutter — его подход к рендерингу через собственный движок. Из-за этого производительность, почти наравне с нативной разработкой — даже самый сложный интерфейс, созданный на этом фреймворке, работает плавно и отзывчиво.

Известные приложения, написанные на Flutter: Google Pay, Google Earth, Wolt, Alibaba, eBay, BWM.

Преимущества:

  • высокая производительность — почти наравне с нативными приложениями;
  • богатый выбор виджетов, позволяющий быстро создавать красивые интерфейсы.

Недостатки:

  • дороговизна из-за высокого оклада разработчиков;
  • меньше специалистов на рынке по сравнению с React Native;
  • увеличивает сложность вашего проекта за счет внедрения новой технологии;
  • крутая кривая обучения для новых разработчиков.

Подойдет когда:

Вам нужно реализовать очень сложный дизайн и частоту обновления экрана выше 60 кадров в секунду, при этом нативную разработку рассматривать не готовы. 

Ionic

Ionic под капотом использует Angular — популярный фреймворк для веб-разработки. В сущности, Ionic — набор инструментов для создания мобильных приложений на Angular.

Когда-то Angular был самой популярной веб-технологией, но в гонке фреймворков его обогнал React  — более удобный инструмент от Facebook. Сегодня Angular занимает пятое место по популярности — его используют 17% веб-разработчиков .

У Angular и React похожие задачи, но разные подходы к их решению. Angular предлагает более жесткую структуру приложения, а React — больше свободы. В большом проекте неопытная команда может нелогично спроектировать архитектуру приложения. Это усложнит поддержку приложения и онбординг новых специалистов, которые будут теряться в дереве папок.

Известные приложения, написанные на Ionic: Sworkit, Untappd, MarketWatch, Shipt, Sanvello.

Преимущества:

  • низкий порог входа для веб-разработчиков из-за использования HTML, CSS и JavaScript;
  • можно использовать весь инструментарий Angular;
  • больший размер приложения по сравнению из-за которого возникает долгая загрузка.

Недостатки:

Низкая производительность. Приложение на Ionic по сути — веб-сайт, запущенный внутри нативной оболочки. Оно работает заметно медленнее нативных аналогов, особенно на слабых устройствах.

Подойдет когда:

У вас в команде есть Angular-разработчики — они смогут сделать мобильное приложение почти без переобучения.

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

ФреймворкПлюсыМинусы
React Native— Большое количество специалистов на рынке и крупнейшее сообщество разработчиков
— Обширная экосистема библиотек
— Быстрый рендеринг нативных компонентов
— Подходит как для MVP, так и для крупных проектов
Производительность ниже, чем при нативной разработке 
Flutter— Высокая производительность
— Богатый выбор виджетов для создания UI
— Меньше специалистов на рынке по сравнению с React Native
— Разработка обходится значительно дороже
IonicЖесткая структура проекта бережет от архитектурных ошибок Использует непопулярный инструмент — Angular

Как выбрать правильный инструмент кроссплатформенной разработки

Давайте подробно разберем, какие аспекты могут повлиять на выбор технологии.

Тип приложения

Тип приложения — его категория: приложения бывают для доставки продуктов, вызова такси, общения, учёта времени. От этого зависит выбор технологии.  Для большей части проектов мы рекомендуем React Native — он обеспечивает баланс между скоростью, стоимостью и производительностью.

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

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

Навыки команды разработчиков

Если вы планируете делать проект инхаус и в вашей команде уже имеется экспертиза — отталкиваетесь в выборе от неё. Экспертиза конвертируется в выбор технологии вот так:

  • JavaScript/React → React Native
  • Dart → Flutter
  • TypeScript/Angular → Ionic

Также учитывайте ситуацию на рынке труда.

React Native — самый популярный фреймворк, поэтому найти разработчиков проще и дешевле. Это поможет вам быстро масштабировать проект.

Flutter набирает популярность, но опытных специалистов в РФ пока меньше, а их оклад — выше. Поэтому разработка обойдётся дороже.

Популярность и поддержка фреймворка

Если у технологии есть активное сообщество — это ускорит решение возникающих по ходу кодинга сложностей.

Например, если разработчик пишет код на React Native, столкнувшись с какой-то непонятной ему задачей, он сможет быстро найти помощь и её решить: изучит пример на GitHub или задаст вопрос на Stack Overflow. Для бизнеса это выливается в гладкий процесс разработки.

Требования к производительности

Оцените, насколько вам критична производительность. Тут играет роль специфика проекта. 

Для большинства бизнес-задач вполне хватит React Native. Но если вы делаете приложение со сложными вычислениями или вам необходим интерфейс, который будет «летать» — выбирайте Flutter или нативную разработку. И чем сложнее проект, чем больше у вас планов по его масштабированию, тем скорее стоит присмотреться к нативной.

Например, когда мы выбирали стек для корпоративного мессенджера, мы остановились на Android SDK и Kotlin.

Интерфейс, который мы разработали для мессенджера

Вот почему мы выбрали нативную разработку: 

  • Мессенджер — основной инструмент для общения и обмена файлами для 1000+ сотрудников клиента. Было недопустимо, чтобы интерфейс «лагал» при загрузке и открытии тяжелых файлов.
  • Нативный код обеспечивает максимальную безопасность — в нём меньше внешних зависимостей и меньше кода, написанного третьей стороной.

Затраты и лицензии

Есть две основные статьи расходов — лицензия и оклад разработчиков.

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

А вот Ionic требуют платной лицензии. Стоимость лицензии Ionic начинается от $4199 в месяц.

Также стоит оценить долгосрочные затраты на проект. Например, приложение на React Native обойдется дешевле, чем на Flutter из-за более низкого оклада разработчиков.

Коротко о главном

  • Кроссплатформенная разработка — это подход, при котором мы пишем код один раз, а потом запускаем его на разных устройствах: смартфонах, планшетах, компьютерах. Для этого используют специальные инструменты: React Native, Flutter, Ionic.
  • У кроссплатформенной разработки есть свои плюсы и минусы. Главное преимущество — скорость и низкая стоимость: вместо нескольких команд под разные платформы вам хватит одной. Но есть и недостатки: производительность ниже, чем у нативных приложений, а доступ к некоторым функциям устройства может быть ограничен.
  • При выборе инструмента для разработки учитывайте тип вашего приложения, навыки команды и требования к производительности. Для большинства проектов подойдет React Native. Если нужна высокая производительность — присмотритесь к Flutter, а лучше — к нативной разработке, о которой мы подробно рассказали в ещё одной статье.

Нужна помощь с выбором технологии или оценка проекта? Пишите нам! Поможем выбрать оптимальное решение и составим для вас коммерческое предложение в течение двух рабочих дней.

Содержание

Читайте также: