Нативная разработка или кросс-платформенная — что выбрать бизнесу?

Расскажем про два ключевых подхода к разработке мобильных приложений.

Есть два ключевых подхода к разработке мобильных приложений. Первый — это сделать отдельные версии для платформ Android и iOS на Kotlin/Java или SWIFT. Другой подход — разработать универсальное решение для разных мобильных ОС на Flutter. 

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


Нативная разработка на Kotlin и SWIFT

Если кратко, то нативная разработка оптимизирована под каждую платформу и учитывает ее особенности. Поэтому при таком подходе вы получаете некоторые преимущества:


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

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

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

3. Поведение элементов интерфейса. Если речь идет о тех же виджетах, то их анимация может отличаться в приложениях, написанных на кросс-платформенном фреймворке. Это связано с особенностью Flutter, который эмулирует виджеты. Но на практике разницу заметит только очень привередливый пользователь.


Недостатки

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

1. Высокая стоимость, большие сроки. Чтобы сделать приложение под две разных платформы Android и iOS, при нативной разработке нужно брать две отдельных команды. Это означает, что время разработки и стоимость увеличивается в два раза — ведь команды не связаны друг с другом напрямую. 

2. Сложно найти команды. Сейчас кросс-платформенная разработка становится все более популярной из-за универсальности. Поэтому найти команду разработчиков на SWIFT и на Kotlin сложнее, а стоимость работы по часам будет выше.

3. Нужно наладить взаимодействие разработчиков. Для того, чтобы приложение работало так, как задумано, нужно наладить кросс-функциональное взаимодействие между двумя командами. Иначе версии на разных платформах будут сильно отличаться. Это дополнительно усложняет процесс и затягивает релиз продукта.

4. Не универсальное решение. Допустим, сейчас у вас нет потребности писать приложение под iOS — ведь Apple ушел с российского рынка. Кажется, что сейчас актуальнее сделать версию только под Android и не тратить лишних денег. Но представьте, что через время Apple вернется на рынок, а у многих клиентов по-прежнему есть iPhone. Чтобы бизнес оставался конкурентоспособным, нужно будет срочно писать отдельное приложение под iOS.

5. Повышенные риски. Все понимают, что время сейчас неспокойное, и российское ПО могут тихо удалить из AppStore или Play Market. Если ваш бизнес строился на работе мобильного приложение и не было web версии, то возникнут большие проблемы. 


Кросс-платформенная разработка на Flutter

Другой подход — создать мобильное приложение сразу для Android и iOS. Для этого подойдет, например, Flutter. Эту платформу разработала компания Google еще в 2015 году под кодовым названием Sky и сейчас активно развивает ее. Код пишется на языке Dart, а набор элементов интерфейса есть в библиотеке Foundation. 


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

При кросс-платформенной разработке вам условно понадобятся два разработчика, которые будут работать в единой связке. В результате это дает преимущества бизнесу, в сравнении с нативной разработкой:

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

2. Разработчиков проще найти. На рынке все больше предложений по кросс-платформенной разработке, и стоимость часа работы разработчика на Flutter на 20-30% меньше. 

3. Не нужно думать о взаимодействии команд. Ведь разработкой занимается одна команда разработчиков: они сами разберутся, как им выстроить работу над проектом, используют Agile подход без контроля внешним Project-менеджером и так далее.  

4. Актуально в любой ситуации. Если вдруг Apple возвращается в Россию, то вам не потребуется разрабатывать отдельную версию под iOS: доработать код на Flutter будет проще и быстрее.

5. Страховка на непредвиденные случаи. Google в марте 2021 года выпустил обновление 2.0 для Flutter, в котором реализована возможность создавать web версии. Если ваше приложение удалят из магазина, а сайта нет, то решить проблему можно будет с минимальными затратами.


Недостатки

Главный недостаток кросс-платформенной разработки: более низкая производительность. Это логично, что универсальное решение не может учесть специфику каждой платформы в полной мере. Поэтому если требуется высокая скорость запуска приложения либо минимальное время отклика сканера отпечатков пальцев, то лучше выбрать нативную разработку на Kotlin/SWIFT. 



Что можно реализовать на Flutter

Если кратко, то практически что угодно: начиная от мобильного интернет-магазина или CRM системы и заканчивая совсем нестандартными приложениями. Например, вот такие проекты мы выполняли для наших клиентов:


Онлайн-запись на тренировки. У заказчика есть тренажерный зал. Раньше, чтобы записаться в него, нужно было звонить или оставлять заявку на сайте. Это неудобно, потому что не всегда есть время на звонок или доступ к компьютеру, а сайт в мобильной версии тормозил.


Мы разработали мобильное приложение, которое позволяет записываться на тренировки онлайн быстро и удобно. И дополнительно реализовали полезный функционал:

  • клиент спортзала может посмотреть аналитику: сколько он занимался в неделю, месяц или год, и когда пропускал занятия. Это поможет скорректировать график тренировок под свой рабочий ритм.

  • у заказчика есть еще и интернет-магазин спортивного питания. Мы реализовали его функционал в приложении, чтобы все было в одном месте. Это заметно повышает конверсию продаж.

  • в приложении есть раздел советов-статей: например, какую выбрать программу тренировок, как быстрее набирать мышечную массу и так далее. Они приходят в виде push уведомлений. 


Альтернатива CRM системы. Компания-заказчик занимается ремонтом и обслуживанием компьютеров. У него есть мастера, которые выезжают к клиентам, если вдруг не работает операционная система, нужно установить антивирус или сломался жесткий диск. И есть call-центр, который собирает заявки, а дальше пересылает их мастеру в мессенджере. 


Проблема в том, что мастер всегда в разъездах, а в мессенджере еще куча переписок с клиентами. Поэтому заявки терялись, срывались сроки исполнения и так далее. 


Мы разработали мобильное приложение на Flutter, которое собирает заявки от операторов, выстраивает их в порядке приоритета и учитывает геолокацию. Теперь мастера видят список дел на день и последовательно их выполняют. При этом порядок заявок оптимизирован: не нужно кататься из одного района в другой через весь город. Стандартная CRM система такой функционал не поддерживает.


В итоге

В целом, выбор того, на чем делать мобильное приложение, зависит от задачи и возможностей бизнеса.


Нативная разработка на Kotlin/Java или SWIFT подойдет, если: 

  • у вас нет жестких ограничений по бюджету и сжатых сроков на релиз;

  • приложение очень ресурсозатратно и должно работать быстро даже на смартфонах попроще;

  • нужно задействовать внутренние функции смартфона: компас, сканер отпечатков пальцев и так далее.


Кросс-платформенная разработка на Flutter — классное решение, если:

  • продукт нужно запустить побыстрее и с относительно небольшим бюджетом. Например, если речь идет о стартапе, интернет-магазине и так далее;

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

Есть задача?
Найдем решение!
Я даю Согласие на обработку персональных данных в соответствии с Политикой Конфиденциальности