Что такое кроссплатформенная разработка мобильных приложений?
В наши дни многие компании сталкиваются с проблемой необходимости разработки мобильных приложений для нескольких платформ, в частности, для Android и iOS. Именно поэтому решения для кроссплатформенной разработки мобильных приложений стали одним из самых популярных трендов в области разработки программного обеспечения.
Согласно данным Statista, в первом квартале 2021 года в Google Play Store было доступно 3,48 млн мобильных приложений, а в App Store — 2,22 млн приложений, при этом Android и iOS сейчас составляют 99% мирового рынка мобильных операционных систем.
Как создать мобильное приложение, которое сможет достичь аудитории Android и iOS? В этой статье вы узнаете, почему все больше и больше мобильных инженеров выбирают кроссплатформенный, или мультиплатформенный, подход к разработке мобильных приложений.
Кроссплатформенная разработка мобильных приложений: определение и решения
Мультиплатформенная разработка мобильных приложений — это подход, который позволяет создавать одно мобильное приложение, работающее без проблем на нескольких операционных системах. В кроссплатформенных приложениях часть или даже весь исходный код может быть общим. Это означает, что разработчики могут создавать и развертывать мобильные ресурсы, работающие как на Android, так и на iOS, без необходимости переписывать код для каждой отдельной платформы.
Различные подходы к разработке мобильных приложений
Существует четыре основных способа создания приложения для Android и iOS.
1. Раздельная разработка нативных приложений для каждой операционной системы
При создании нативных приложений разработчики создают приложение для конкретной операционной системы и полагаются на инструменты и языки программирования, разработанные специально для одной платформы: Kotlin или Java для Android, Objective-C или Swift для iOS.
Эти инструменты и языки предоставляют доступ к функциям и возможностям данной ОС и позволяют создавать отзывчивые приложения с интуитивно понятным интерфейсом. Но если вы хотите охватить аудиторию как Android, так и iOS, вам придется создавать отдельные приложения, что займет много времени и усилий.
2. Прогрессивные веб-приложения (PWA)
Прогрессивные веб-приложения объединяют функции мобильных приложений с решениями, используемыми в веб-разработке. Грубо говоря, они предлагают смесь веб-сайта и мобильного приложения. Разработчики создают PWA с использованием веб-технологий, таких как JavaScript, HTML, CSS и WebAssembly.
Веб-приложения не требуют отдельного объединения или распространения и могут быть опубликованы в Интернете. Они доступны через браузер на вашем компьютере, смартфоне и планшете и не требуют установки через Google Play или App Store.
Недостатком является то, что пользователь не может использовать все возможности своего устройства, например, контакты, календарь, телефон и другие ресурсы, что приводит к ограниченному пользовательскому опыту. По производительности приложения нативные приложения лидируют.
3. Кроссплатформенные приложения
Как упоминалось ранее, мультиплатформенные приложения разработаны для идентичной работы на различных мобильных платформах. Кроссплатформенные фреймворки позволяют писать общий и повторно используемый код для разработки таких приложений.
Этот подход имеет несколько преимуществ, таких как эффективность с точки зрения времени и затрат. Более подробный анализ преимуществ и недостатков кроссплатформенной разработки мобильных приложений будет проведен в последующем разделе.
4. Гибридные приложения
При просмотре веб-сайтов и форумов вы можете заметить, что некоторые люди используют термины "кроссплатформенная разработка мобильных приложений" и "гибридная разработка мобильных приложений" взаимозаменяемо. Однако такое использование не совсем корректно.
В случае кроссплатформенных приложений мобильные инженеры могут написать код один раз и затем повторно использовать его на разных платформах. Гибридная разработка приложений, с другой стороны, — это подход, сочетающий нативные и веб-технологии. Он требует встраивания кода, написанного на языке веб-разработки, таком как HTML, CSS или JavaScript, в нативное приложение. Это можно сделать с помощью фреймворков, таких как Ionic Capacitor и Apache Cordova, с использованием дополнительных плагинов для доступа к нативным функциям платформ.
Единственным сходством между кроссплатформенной и гибридной разработкой является возможность совместного использования кода. С точки зрения производительности гибридные приложения не соответствуют нативным приложениям. Поскольку гибридные приложения используют единую базу кода, некоторые функции специфичны для определенной ОС и не работают должным образом на других.
Нативная или кроссплатформенная разработка приложений: давний спор
Спор вокруг нативной и кроссплатформенной разработки остается нерешенным в технологическом сообществе. Обе эти технологии постоянно развиваются и имеют свои преимущества и ограничения.
Некоторые эксперты по-прежнему предпочитают нативную разработку мобильных приложений решениям для нескольких платформ, указывая на более высокую производительность и лучший пользовательский опыт нативных приложений как на одни из самых важных преимуществ.
Однако многие современные компании нуждаются в сокращении времени выхода на рынок и затрат на разработку под каждую платформу, сохраняя при этом присутствие как на Android, так и на iOS. Именно здесь кроссплатформенные фреймворки, такие как Kotlin Multiplatform Mobile, могут помочь, как отмечают Дэвид Генри и Мел Яхия, старшие инженеры-программисты Netflix, здесь:
Подходит ли вам кроссплатформенная разработка мобильных приложений?
Выбор подхода к разработке мобильных приложений зависит от многих факторов, таких как бизнес-требования, цели и задачи. Как и любое другое решение, кроссплатформенная разработка мобильных приложений имеет свои плюсы и минусы.
Преимущества кроссплатформенной разработки
Существует множество причин, по которым компании выбирают этот подход по сравнению с другими.
1. Повторное использование кода
При кроссплатформенной разработке мобильные инженеры не должны писать новый код для каждой операционной системы. Использование одного кода позволяет разработчикам сократить время, затрачиваемое на выполнение повторяющихся задач, таких как вызовы API, хранение данных, сериализация данных и реализация аналитики.
В нашем исследовании Kotlin Multiplatform за период с Q3 по Q4 2021 года мы задали сообществу Kotlin вопрос о том, какие части кода можно использовать на разных платформах.
2. Экономия времени
Благодаря возможности повторного использования кода, кроссплатформенные приложения требуют меньше кода, а в программировании меньше кода — лучше. Экономия времени связана с уменьшением необходимого объема кода. Кроме того, с меньшим количеством строк кода уменьшается вероятность появления ошибок, что сокращает время, затрачиваемое на тестирование и обслуживание кода.
3. Эффективное управление ресурсами
Создание отдельных приложений обходится дорого. Использование одного кода помогает эффективно управлять ресурсами. Команды разработчиков Android и iOS могут изучить, как писать и использовать общий код.
4. Привлекательные возможности для разработчиков
Многие мобильные инженеры рассматривают современные кроссплатформенные технологии как желательные элементы в стеке технологий продукта. Разработчики могут устать от повторяющихся и рутинных задач, таких как парсинг JSON. Однако новые технологии и задачи могут вернуть им интерес, мотивацию и удовольствие от выполнения задач. Это означает, что современный стек технологий может упростить процесс найма вашей мобильной команды.
5. Возможность охвата более широкой аудитории
Вам не нужно выбирать между различными платформами. Поскольку ваше приложение совместимо с несколькими операционными системами, вы можете удовлетворить потребности аудитории Android и iOS и максимизировать охват.
6. Более быстрое выведение на рынок и настройка
Поскольку вам не нужно создавать разные приложения для разных платформ, вы можете разработать и выпустить свой продукт гораздо быстрее. Более того, если ваше приложение требует настройки или преобразования, программистам будет легче вносить небольшие изменения в конкретные части кодовой базы. Это также позволит вам быстрее реагировать на отзывы пользователей.
Вызовы кроссплатформенного подхода к разработке
Все решения имеют свои ограничения. С какими проблемами вы можете столкнуться при кроссплатформенном программировании? Некоторые люди в технологическом сообществе утверждают, что кроссплатформенная разработка все еще сталкивается с проблемами, связанными с производительностью. Кроме того, руководители проектов могут опасаться, что их цель оптимизации процесса разработки окажет негативное влияние на пользовательский опыт приложения. Однако с улучшением технологий кроссплатформенные решения становятся все более стабильными, адаптивными и гибкими.
В нашем исследовании Kotlin Multiplatform за период с Q1 по Q2 2021 года мы спросили участников исследования, удовлетворены ли они качеством своих приложений после перехода на Kotlin Multiplatform Mobile. На вопрос о том, удовлетворены ли они производительностью, размером бинарного файла и внешним видом своих приложений, положительно ответили 98,3% респондентов.
Еще один вопрос — возможность беспрепятственной поддержки собственных функций приложений. Тем не менее, если вы создаёте кроссплатформенное приложение, которое должно получать доступ к платформам-специфичным API, вы можете использовать ожидаемые и фактические объявления Kotlin. Они позволяют определять в общем коде, что вы «ожидаете» возможности вызывать ту же функцию на нескольких платформах, и предоставлять «фактические» реализации, которые могут взаимодействовать с любыми платформа-специфичными библиотеками благодаря межплатформенной совместимости Kotlin с Java и Objective-C/Swift.
Эти проблемы ставят вопрос о том, заметит ли конечный пользователь разницу между приложениями, созданными нативных и кроссплатформенных технологиях.
По мере развития современных многоплатформенных фреймворков мобильные инженеры все чаще могут создавать опыт, близкий к нативному. Если приложение написано хорошо, пользователь не заметит разницы. Однако качество вашего продукта во многом будет зависеть от инструментов кроссплатформенной разработки мобильных приложений, которые вы выберете.
Самые популярные кроссплатформенные решения
Самые популярные кроссплатформенные фреймворки включают Flutter, React Native и Kotlin Multiplatform Mobile. Каждый из этих фреймворков имеет свои возможности и преимущества. В зависимости от используемого инструмента ваш процесс разработки и результат могут отличаться.
Flutter
Flutter — кроссплатформенный фреймворк для разработки, созданный компанией Google и использующий язык программирования Dart. Flutter поддерживает родные функции, такие как сервисы геолокации, функции камеры и доступ к жесткому диску. Если вам нужно создать определённую функцию приложения, которая не поддерживается в Flutter, вы можете написать платформо-специфический код, используя технологию Platform Channel.
Приложения, созданные с помощью Flutter, должны совместно использовать все слои пользовательского интерфейса (UI), поэтому они могут не всегда ощущаться на 100% как родные приложения. Одним из лучших аспектов этого фреймворка является функция Hot Reload, которая позволяет разработчикам вносить изменения и мгновенно видеть их результат.
Этот фреймворк может быть лучшим вариантом в следующих ситуациях:
Вы хотите совместно использовать компоненты пользовательского интерфейса (UI) между приложениями, но хотите, чтобы ваши приложения выглядели как родные.
Приложение ожидается, что будет загружать процессор/графический процессор (CPU/GPU).
Вам необходимо разработать MVP-приложение.
Среди самых популярных приложений, созданных с помощью Flutter, — Google Ads, Xianyu от Alibaba, eBay Motors и Hamilton.
React Native
Компания Facebook представила React Native в 2015 году как открытый фреймворк, предназначенный для помощи мобильным разработчикам в создании гибридных приложений, частично или полностью использующих родные элементы. Он основан на ReactJS — JavaScript-библиотеке для построения пользовательских интерфейсов. Другими словами, он использует JavaScript для создания мобильных приложений для Android и iOS.
React Native предоставляет доступ к нескольким сторонним библиотекам UI с готовыми компонентами, что помогает мобильным разработчикам экономить время во время процесса разработки. Как и Flutter, он позволяет вам мгновенно видеть все изменения благодаря функции Fast Refresh.
Вы должны рассмотреть использование React Native для вашего приложения в следующих случаях:
Ваше приложение относительно простое и ожидается, что оно будет лёгким.
Команда разработчиков хорошо знакома с JavaScript или React.
Примеры приложений, созданных с помощью React Native: Facebook, Instagram, Skype и Uber Eats.
Kotlin Multiplatform Mobile
Kotlin Multiplatform Mobile — это SDK для кроссплатформенной мобильной разработки, предоставляемый JetBrains. Он позволяет создавать приложения для Android и iOS с общей логикой. Его ключевые преимущества включают:
Плавную интеграцию с существующими проектами.
Полный контроль над пользовательским интерфейсом (UI), а также возможность использования новейших фреймворков UI, таких как SwiftUI и Jetpack Compose.
Легкий доступ к Android и iOS SDK без ограничений.
Как глобальные компании, так и стартапы уже использовали Kotlin Multiplatform Mobile для оптимизации и ускорения своих мобильных проектов. Преимущества такого подхода очевидны из историй компаний, которые уже его приняли.
Команда разработчиков призананого приложения Todoist начала использовать Kotlin Multiplatform Mobile для синхронизации логики сортировки своего приложения на нескольких платформах, объединив таким образом преимущества кроссплатформенных и родных приложений. Узнайте больше об их опыте в этом видео.
Внедрение Kotlin Multiplatform позволило Philips быстрее внедрять новые функции и повысить взаимодействие между их Android и iOS разработчиками.
Shopify смогла использовать Kotlin Multiplatform для совместного использования поразительных 95% своего кода, что также привело к значительному улучшению производительности. Аналогично, стартап Down Dog использует Kotlin Multiplatform для ускорения разработки приложений за счёт максимального использования общего кода между всеми платформами: JVM, Native и JS.
Заключение
По мере развития кроссплатформенных решений для разработки, их ограничения становятся менее заметными по сравнению с предоставляемыми преимуществами. На рынке доступно множество технологий, подходящих для разных рабочих процессов и требований. Каждый из инструментов, рассмотренных в этой статье, предлагает широкую поддержку командам, задумывающимся о кроссплатформенном подходе.
В конечном счете, тщательное изучение ваших конкретных бизнес-потребностей, целей и задач, а также разработка ясных целей, которые вы хотите достичь с помощью вашего приложения, помогут вам определить наилучшее решение для вас.
© 2010–2022 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/cross-platform-mobile-development.html