Разработка кроссплатформенного мобильного приложения — когда это оправдано?
И когда нативной разработки не избежать
Мобильные приложения с каждым годом становятся все популярнее — сейчас в мире насчитывается более 5 млрд пользователей смартфонов. Бизнесу уже кажется неловким обходиться без мобильного приложения. Да и многие мобильные приложения сами по себе — полноценный бизнес. Но здесь появляется главный вопрос — имеет ли смысл разработка кроссплатформенного приложения или нужно обязательно создавать нативные, под каждую операционную систему?
В статье мы разберем плюсы и минусы кроссплатформенной и нативной разработки, а также расскажем, какой вариант выбрать именно для ваших целей.
В статье мы разберем плюсы и минусы кроссплатформенной и нативной разработки, а также расскажем, какой вариант выбрать именно для ваших целей.
Кроссплатформенная разработка — быстрый старт с небольшими инвестициями
Кроссплатформенность означает, что готовое приложение можно будет использовать на нескольких платформах. Чаще всего кроссплатформенными называют приложения, которые разрабатываются сразу для двух платформ — iOs и Android. На первый взгляд такое решение кажется оптимальным для бизнеса — ведь если есть возможность разработать одно приложение для всех пользователей, а не заказывать разработку отдельно под каждую платформу, почему бы так не сделать?
Кроссплатформенная разработка, очевидно, выигрывает у нативной по скорости и стоимости. Вам понадобится всего одна команда разработчиков и тестировщиков, не нужно будет подгонять дизайн под каждую платформу, а если в приложении необходимо будет сделать изменения, это тоже получится гораздо быстрее.
У кроссплатформенной разработки есть и минусы:
Кроссплатформенная разработка, очевидно, выигрывает у нативной по скорости и стоимости. Вам понадобится всего одна команда разработчиков и тестировщиков, не нужно будет подгонять дизайн под каждую платформу, а если в приложении необходимо будет сделать изменения, это тоже получится гораздо быстрее.
У кроссплатформенной разработки есть и минусы:
- У вас не получится «отработать на максимум» в дизайне — у каждой платформы есть свои принципы взаимодействия с пользователем. Те же жесты для Andriod и iOS различаются. Поэтому для кроссплатформенного приложения придется использовать унифицированный дизайн, в котором не используются уникальные для платформы пользовательские сценарии.
- Фреймворки для разработки кросс-платформенных приложений поддерживают не все функции устройств — в некоторых случаях в приложении придется дописывать код на нативных языках для каждой платформы или подключать дополнительные модули. Например, популярный кроссплатформенный фреймворк React Native не поддерживает обращение к датчикам смартфона или проигрывание медиа. Также может возникнуть проблема со встроенными покупками, потому что у каждой операционной системы этот процесс отличается.
- Необходимо оперативно проверять приложение после выхода свежей версии каждой системы. Скорее всего, под свежей операционкой что-то перестанет работать как задумывалось, придется оперативно это чинить. Благо — эти обновления обычно происходят не синхронно. Таким образом, за время своего существования кроссплатформенное приложение потребует в среднем вдвое больше обновлений, чем нативное.
- Есть недоказанная теория, что в AppStore и Google Play лучше продвигаются нативные приложения. Ведь популярные платформы все время соперничают друг с другом, поэтому логично, что они будут больше поддерживать «своих» разработчиков, чем универсальных.
- Еще небольшой нюанс — кроссплатформенное приложение скорее всего будет весить больше, чем нативное. Многие пользователи обращают на это внимание и при прочих равных выберут более «компактное» приложение.
Существует несколько популярных кроссплатформенных фреймворков, и постоянно появляются новые. Для своего приложения хочется использовать самые современные технологии, чтобы оно дольше не устарело. Но вот беда — не ясно, станет ли модная технология действительно популярной. Например, если ваше приложение написано на Xamarin, то для его доработки нужно искать специалиста, который Xamarin умеет. А их не так много. Сейчас проще и дешевле найти разработчика на Flutter.
В случае с нативными приложениями выбор языков программирования не так велик. Так что найти хороших разработчиков на нативную разработку проще, чем тех, которые занимаются именно кроссплатформенными приложениями. В идеале, при кроссплатформенной разработке разработчик должен отлично знать и iOS, и Android, и тот кроссплатформенный фреймворк, на котором он работает. Стоить такие специалисты также будут дороже, чем узкие.
В случае с нативными приложениями выбор языков программирования не так велик. Так что найти хороших разработчиков на нативную разработку проще, чем тех, которые занимаются именно кроссплатформенными приложениями. В идеале, при кроссплатформенной разработке разработчик должен отлично знать и iOS, и Android, и тот кроссплатформенный фреймворк, на котором он работает. Стоить такие специалисты также будут дороже, чем узкие.
Когда имеет смысл разработка кроссплатформенного приложения
- При создании MVP или тестировании гипотезы. Если для вас главную роль играет стоимость и скорость разработки, то нанимать две команды под каждую операционную систему не имеет смысла. Сроки в итоге все равно окажутся больше, даже если разработка пойдет параллельно. Так что проще выпустить кроссплатформенное приложение.
- В приложении нет сложной логики. Пользователи iOS и Android по-разному взаимодействуют с приложениями из-за различного интерфейса систем. В приложениях со сложной логикой это особенно заметно. Но если вы разрабатываете что-то относительно типовое — например, интернет-магазин — то и взаимодействия будут стандартными.
- Дизайн приложения максимально простой. В некоторых приложениях — например, для медитации или творчества, оформление играет особую роль. Пользователи хотят видеть звуковые, визуальные и тактильные отклики на свои действия. В кроссплатформенном приложении такое сложно реализовать — все равно придется писать свой код под каждую платформу. Если же в вашем проекте таких спецэффектов не надо — стоит рассмотреть кроссплатформенную разработку.
- Вы хотите охватить как можно больше пользователей сразу. Кроссплатформенная разработка позволяет охватить сразу всех пользователей смартфонов, в то время как нативное приложение, как правило, сначала появляется на одной из платформ.
- Важно, чтобы ваше приложение было абсолютно одинаковым для пользователя любой платформы. Если перед вами стоит такая задача, то, конечно, есть смысл разработать кроссплатформенное приложение с единым дизайном, а заодно и кодом.
Когда нужна нативная разработка
Да, для нативной разработки вам понадобится две команды программистов и тестировщиков, а обновления придется делать по сути для двух приложений. Но если вы хотите воплотить в своем приложении сложную логику и сделать его максимально удобным для пользователей определенной операционной системы, то кроссплатформенная разработка вам не подойдет.
К тому же, нативная разработка в некоторых случаях может быть выгоднее — например, если подавляющее большинство ваших клиентов пользуется смартфонами на определенной ОС, то есть смысл разработать приложение именно под нее. Это выйдет быстрее и дешевле, чем кроссплатформенная разработка.
Найти хороших специалистов для нативного приложения проще — ведь такой разработчик будет знать все тонкости «своей» операционной системы и следить за всеми ее обновлениями. Все-таки, большинство «универсальных» кроссплатформенных специалистов физически не могут охватить все тонкости сразу обеих популярных систем.
Высоконагруженные приложения тоже будут лучше работать в «нативном» варианте (например — мобильный банк или приложения для трейдинга). Кроссплатформенная разработка может сделать такое приложение излишне неповоротливым, а сложные сценарии будут отнимать у смартфона слишком много оперативной памяти.
К тому же, нативная разработка в некоторых случаях может быть выгоднее — например, если подавляющее большинство ваших клиентов пользуется смартфонами на определенной ОС, то есть смысл разработать приложение именно под нее. Это выйдет быстрее и дешевле, чем кроссплатформенная разработка.
Найти хороших специалистов для нативного приложения проще — ведь такой разработчик будет знать все тонкости «своей» операционной системы и следить за всеми ее обновлениями. Все-таки, большинство «универсальных» кроссплатформенных специалистов физически не могут охватить все тонкости сразу обеих популярных систем.
Высоконагруженные приложения тоже будут лучше работать в «нативном» варианте (например — мобильный банк или приложения для трейдинга). Кроссплатформенная разработка может сделать такое приложение излишне неповоротливым, а сложные сценарии будут отнимать у смартфона слишком много оперативной памяти.
Итак, кроссплатформенная разработка идеально подходит для простых приложений или для тестирования гипотез, когда важно быстро получить обратную связь. Когда приложение требует интеграции с «начинкой» устройства, лучше выбрать нативную разработку.
Самые популярные кроссплатформенные фреймворки
React Native
Пожалуй, это наиболее распространенный среди разработчиков фреймворк. Он был создан Facebook на основе JavaScript, Java, C++ и Objective-C. React Native позволяет работать с большинством популярных платформ — Android, iOS, Windows, MacOS, а также со смарт-ТВ. React Native удобен тем, что поддерживает интеграцию с другими языками программирования, а также с нативными приложениями. Например, в уже существующее приложение для iOS или Android можно дописать часть кода на React Native.
Flutter
Этот фреймворк был разработан Google на основе C++, Dart и Skia Graphics Engine. Изначально Flutter создавался только для Android-приложений, но сейчас он позволяет работать также и с iOS, Windows, macOS и Linux, хотя для работы с iOS фреймворку приходится использовать АОТ-компиляцию. В отличие React Native, Flutter не превращает исходный код приложения в нативный, который уже выполняется платформой. Он фактически рисует своё окно на экране телефона и выводит все элементы сам.
Кстати, SingularityApp мы разрабатываем на Flutter. Приложение практически невозможно отличить от нативного. Попробуйте сами!
Kotlin Multiplatform Mobile
Фреймворк находится на стадии альфа-тестирования, но уже получил популярность среди разработчиков. Kotlin Multiplatform Mobile позволяет создавать кроссплатформенный приложения, сохраняя нативный UI-слой. То есть, визуальный интерфейс приложения выглядит «родным» на любой платформе. Код, написанный на Kotlin, легко внедрить в уже имеющееся нативное приложение — это позволяет сократить затраты на разработку. Также в помощью фреймворка можно создавать собственные мультиплатформенные библиотеки.
Xamarin
Этот фреймворк написан на основе C# и практически не отличается от него по своей логике. Он позволяет создавать приложения для iOS, Android и Windows Phone, а также для десктопных платформ, смарт-ТВ и умных часов. Xamarin отличается своей «самодостаточностью» — на нем без использования сторонних модулей и элементов нативного кода можно написать до 90% приложения.
Делаем выводы
Если вы хотите быстро разработать простое приложение без избытка мультимедиа, которое не планируется часто обновлять — есть смысл выбрать кроссплатформенную разработку.
Если ваше приложение должно быть сложным, интерактивным, высоконагруженным (самый очевидный пример — мобильные игры) — выбирайте нативную разработку. А чтобы решить, какую платформу выбрать первой, проанализируйте, с каких устройств к вам чаще будут заходить клиенты.
Не забывайте, что маркетплейсы лучше относятся к нативным приложениям. Поэтому, если быстрая модерация на AppStore и Google Play для вас важна, стоит иметь это в виду.
Если ваше приложение должно быть сложным, интерактивным, высоконагруженным (самый очевидный пример — мобильные игры) — выбирайте нативную разработку. А чтобы решить, какую платформу выбрать первой, проанализируйте, с каких устройств к вам чаще будут заходить клиенты.
Не забывайте, что маркетплейсы лучше относятся к нативным приложениям. Поэтому, если быстрая модерация на AppStore и Google Play для вас важна, стоит иметь это в виду.
В остальных случаях выбор стоит скорее между опытом команд, ценами и сроками, чем между технологиями. Если вы не уверены с выбором — запросите смету и расчет сроков у нескольких команд, чтобы было можно сравнить расчеты для обоих вариантов. Так сделать выбор будет проще.