Благодаря кроссплатформенному подходу к созданию программ можно существенно сократить время и стоимость разработки. Однако при этом не стоит рассчитывать на выдающуюся производительность и / или максимальную интеграцию с функциями и сервисами платформы и устройства. Настройка также может стать проблемой, поскольку она будет ограничена используемой структурой.
Плюсы кроссплатформенной разработки приложений
- Единая база кода для всех платформ.
Возможно, главный плюс кроссплатформенной разработки — использование одной базы кода для разных мобильных платформ. Благодаря этому команда разработчиков может использовать лишь один технологический стек (и при этом его гораздо проще подобрать), а не сразу несколько технологических стеков для каждой мобильной платформы / операционной системы.
Более простое и быстрое развертывание.
Поскольку для создания кроссплатформенных решений не нужно изучать несколько технологических стеков, разработчики могут сконцентрироваться на одном технологическом стеке, что позволяет изучить и затем реализовать все его преимущества. Кроме того, одна кодовая база также позволяет сильно ускорить начальное развертывание приложения сразу на нескольких платформах, а также сократить время и сложность апдейтов.
- Сокращение времени и стоимости разработки.
Это еще одно важное преимущество кроссплатформенной разработки, которое достигается за счет сокращения времени на написание кода для двух и больше баз кода. Сколько именно можно сэкономить времени и денег, зависит от задачи проекта и фреймворка. Например, благодаря React Native вы можете создавать приложения на 50% быстрее, чем при нативной разработке. Кроме того, React Native позволяет использовать готовые компоненты, которые уже были созданы кем-то другим, легко интегрируя их в свой собственный проект. Именно поэтому мы в Merehead создаем кроссплатформенные приложения, используя React Native.
- Покрытие более широкой аудитории пользователей.
Так как кроссплатформенные решения разрабатываются для двух и более платформ / операционных систем, то и охват целевой аудитории у них больше. Это позволяет представить приложение на большем количестве мобильных устройств для большего числа пользователей, что делает кроссплатформу более выгодной для бизнеса, чем присутствие лишь на одной платформе.
- Допустимость одинакового интерфейса и UX.
Одна команда разработчиков и общая кодовая база дает возможность создать одинаковый пользовательский интерфейс для всех платформ, что очень важно для брендов. Кроме того, это позволяет реализовать «бесшовный» переход с одной платформы на другую, например, со смартфона на планшет, ноутбук, компьютер или телевизор (игровую приставку или смарт-тв).
Минусы кроссплатформенной разработки приложений
- Меньшая гибкость, чем у нативных приложений.
Унифицированный стек технологий не дает такой же высокой гибкости, как стек, заточенный под конкретную платформу. Из-за чего кроссплатформенные решения в подавляющем большинстве не могут обладать такой же степенью интеграции с платформой и устройством, как нативные решения.
- Более низкая производительность и надежность.
Потеря гибкости в разработке также будет означать потерю в возможностях по улучшению и оптимизации производительности. Другими словами, при прочих равных кроссплатформенные решения никогда не будут работать так же быстро, надежно, безопасно и плавно, как нативные приложения.
- Возможное несоответствие в дизайне на двух платформах.
Еще одна проблема, которая может у вас возникнуть, — наличие некоторых отличий между пользовательскими интерфейсами и пользовательским опытом на разных платформах / операционных системах (например, на Windows есть кнопка «Пуск», а на macOS у нее нет аналога). Это может быть обусловлено как разными требованиями к дизайну пользовательских интерфейсов на разных платформах, так и специфическими ограничениями этих платформ.
- Возможные сложности с маркетплейсами приложений.
Механизм и требования к кроссплатформенным приложениям в маркетплейсах Apple App Store и в Google Play Store отличаются. Прохождение всех бюрократических процедур, проверок и тестов может занять много времени и вызвать некоторые трудности.
Особенности нативного и кроссплатформенного подхода
Дизайн интерфейса. Выше мы писали о том, что при создании мобильных приложений используют гайдлайны — это ценные инструкции / указания владельцев платформы, ориентированные на то, чтобы подогнать функционал и
внешний вид приложения под стандарты платформы. Гайдлайны отражают видение создателей платформ о том, как сделать пользовательский опыт на платформе максимально комфортным. Другими словами, с их помощью можно понять, как должен выглядеть дизайн, чтобы он был привычным для пользователей целевой платформы.
При нативной разработке используются языки, которые обладают максимально полным инструментарием для реализации всех требований гайдлайнов, то есть для создания привычного аудитории платформы дизайна. Тогда как кроссплатформенная разработка предполагает использование универсальных инструментов, которые хоть и позволяют приблизить дизайн к «нативному», но для этого вам придется потратить значительно больше усилий. При этом скорость анимации, отзывчивость, эффекты и дизайн все равно будут хоть немного, но другими (правда, это не всегда плохо).
Пользовательский опыт. Более низкая отзывчивость (скорость реакции приложения на действия пользователя), более резкая (дерганая) анимация, пинг и подвисания способны очень сильно испортить пользовательский опыт. Часто эти проблемы приводят к тому, что пользователи удаляют приложение после первого запуска, несмотря на его уникальность, приятный дизайн и низкую стоимость.
Кроссплатформенные решения из-за применения неспецифических для платформ языков в этом плане уступают нативным — они тормозят и виснут, и это их главная проблема. И хотя подвисания могут быть на доли секунды, но и этого достаточно, чтобы пользователь отдал предпочтение нативному приложению. Например, многие предпочитают Android-устройства, поскольку на этом рынке можно найти устройства с частотой обновления экрана 90-140 Гц, тогда как на том же iPhone 12 Pro Max она составляет лишь 60 Гц, что сильно портит пользовательский опыт.
Кроме того, разработчики кроссплатформенных приложений обычно создают одинаковый дизайн (так проще, быстрее и дешевле), что может быть не всегда хорошо, поскольку на каждой платформе обычно есть свои специфические правила (гайдлайны). И когда эти правила игнорируются, пользователям одной из платформ может быть непривычно (некомфортно) использовать приложение.
Яркий пример — привычная для Android-устройств функция Back, не имеющая аналога на iOS. Если у кроссплатформенного приложения будет одинаковый дизайн, то пользователи одной платформы будут вынуждены приспосабливаться, что может ухудшить их пользовательский опыт. Решить эту проблему можно, только создав два разных дизайна с учетом особенностей каждой платформы. Но это, по сути, будут два разных приложения, но на одном кроссплатформенном языке, что во многом нивелирует преимущества данного подхода к разработке программ.
Ограничения мобильной платформы. При нативной разработке вы будете ограничены возможностями платформы и используемого устройства. Проектируя кроссплатформенное приложение, разработчик должен учитывать не только данные ограничения, но и возможности используемого языка, моста и фреймворка.
Обслуживание и поддержка. Для комплексного обслуживания кроссплатформенного решения (обновления, апдейты безопасности, поиск и исправление ошибок) обычно нужно в два раза меньше ресурсов, поскольку с этим может справиться один специалист (команда), тогда как для обслуживания нативных решений для двух платформ нужно как минимум два специалиста (Android, iOS).
Время и стоимость разработки. Создание кроссплатформенных решений, как правило, обходится значительно дешевле нативной разработки, что обусловлено меньшими объемами работ. Выигрыш обычно составляет от 30 до 50%. Вот таблица со сравнением времени и стоимости кроссплатформенной vs нативной разработки, исходя из данных международной фриланс-платформы upwork.com.
Таблица основных различий между нативным и кроссплатформенным подходом
Теперь, когда мы понимаем, что подразумевается под кроссплатформенной и нативной разработкой, а также знаем плюсы и минусы каждого варианта, давайте кратко рассмотрим основные различия между ними.
Резюме (какой подход выбрать)
Решение о выборе оптимального для подхода к разработке приложений зависит от бизнес-задач сложности проекта и индивидуальных обстоятельств, поэтому здесь нельзя дать единственно верного ответа. Можно дать только общие рекомендации.
На нативном подходе разработки приложения стоит остановиться, если:
- приложению предстоит максимально полно использовать все имеющиеся возможности платформы и устройства (многоярусное меню, календарь, анимации, камера, телефонная книга, геотаргетинг и прочее);
- нужны максимальная надежность, безопасность и стабильность;
- нужна максимальная скорость и производительность;
- приложение должно уметь работать офлайн.
Кроссплатформенный подход предпочтительнее, если:
- у вас ограниченный бюджет;
- необходимо в сжатые сроки запустить приложение на двух платформах;
- для вашего бизнеса не требуются сложные функциональные наработки (многоярусное меню, телефонная книга, геопозиция и прочее);
- вы готовы примириться с низкой отзывчивостью.
Также можно еще подчеркнуть, что, если у вас есть возможность, почти всегда предпочтительнее создать нативное приложение (для Андроид Java u Kotlin, для IOS Swift), поскольку это более выгодно в средне- и долгосрочной перспективе.
Кроссплатформенный подход (React Native) же лучше использовать для тестирования идеи и выхода на рынок в кратчайшие сроки. Также такой подход более предпочтителен, если вам нужно простое приложение для решения конкретной задачи, например, лента новостей или форма для голосования.
Небольшой бонус
Если вы все еще не решили, какой вариант подходит для вас лучше — кроссплатформенная vs нативная разработка, воспользуйтесь этой схемой:
Карта выбора способа разработки. Источник