Spec-Zone.ru › Kotlin 1.9

Что такое кроссплатформенная разработка мобильных приложений?

В наши дни многие компании сталкиваются с проблемой необходимости разработки мобильных приложений для нескольких платформ, в частности, для 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)

Прогрессивные веб-приложения сочетают в себе функции мобильных приложений с решениями, используемыми в веб-разработке. Грубо говоря, они предлагают смесь веб-сайта и мобильного приложения. Разработчики создают PWAs, используя веб-технологии, такие как JavaScript, HTML, CSS и WebAssembly.

Веб-приложения не требуют отдельной сборки или распространения и могут быть опубликованы в интернете. Они доступны через браузер на вашем компьютере, смартфоне и планшете и не требуют установки через Google Play или App Store.

Недостатком является то, что пользователь не может использовать все функциональные возможности своего устройства, например, контакты, календари, телефон и другие ресурсы, что приводит к ограниченному пользовательскому опыту. С точки зрения производительности, нативные приложения лидируют.

3. Кроссплатформенные приложения

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

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

4. Гибридные приложения

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

В случае кроссплатформенных приложений мобильные разработчики могут написать код один раз, а затем повторно использовать его на разных платформах. Гибридная разработка приложений, с другой стороны, представляет собой подход, сочетающий нативные и веб-технологии. Она требует внедрения кода, написанного на языке веб-разработки, таком как HTML, CSS или JavaScript, в нативное приложение. Вы можете сделать это с помощью фреймворков, таких как Ionic Capacitor и Apache Cordova, используя дополнительные плагины для доступа к нативным функциям платформ.

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

Нативные или кроссплатформенные приложения: длительный спор

Спор вокруг нативной и кроссплатформенной разработки остается нерешенным в техническом сообществе. Обе эти технологии постоянно развиваются и имеют свои преимущества и ограничения.

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

Однако многие современные компании стремятся сократить время выхода на рынок и затраты на разработку для каждой платформы, при этом сохраняя присутствие как на Android, так и на iOS. Именно здесь кроссплатформенные фреймворки, такие как Kotlin Multiplatform Mobile, могут помочь, как отмечают Дэвид Генри и Мел Яхия, старшие разработчики программного обеспечения Netflix, здесь:

Высокая вероятность ненадежного сетевого подключения привела нас к использованию мобильных решений для обеспечения надежной персистентности клиента и поддержки работы в автономном режиме. Необходимость быстрой доставки продукта побудила нас экспериментировать с многоплатформенной архитектурой. Теперь мы идем еще дальше, используя Kotlin Multiplatform для написания платформонезависимой бизнес-логики один раз на Kotlin и компилирования ее в Kotlin-библиотеку для Android и нативный Universal Framework для iOS.

Подходит ли вам кроссплатформенная разработка мобильных приложений?

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

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

Существует множество причин, по которым компании выбирают этот подход вместо других.

1. Повторное использование кода

При кроссплатформенной разработке мобильным инженерам не нужно писать новый код для каждой операционной системы. Использование единой кодовой базы позволяет разработчикам сократить время, затрачиваемое на выполнение повторяющихся задач, таких как вызовы API, хранение данных, сериализация данных и реализация аналитики.

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

Parts of code Kotlin Multiplatform Mobile users can share between platforms

2. Экономия времени

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

3. Эффективное управление ресурсами

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

4. Привлекательные возможности для разработчиков

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

5. Возможность охватить более широкую аудиторию

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

6. Более быстрое время выхода на рынок и настройка

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

Вызовы кроссплатформенного подхода к разработке

Все решения имеют свои ограничения. С какими проблемами вы можете столкнуться при кроссплатформенной разработке? Некоторые люди в технологическом сообществе утверждают, что кроссплатформенная разработка по-прежнему сталкивается с проблемами, связанными с производительностью. Кроме того, руководители проектов могут опасаться, что их цель оптимизировать процесс разработки негативно скажется на пользовательском опыте приложения. Однако с улучшением технологий кроссплатформенные решения становятся все более стабильными, адаптивными и гибкими.

В нашем исследовании Kotlin Multiplatform за период с первого по второй квартал 2021 года мы спрашивали участников исследования, удовлетворены ли они качеством своих приложений после перехода на Kotlin Multiplatform Mobile. Когда их спрашивали, удовлетворены ли они производительностью, размером двоичного файла и внешним видом своих приложений, целых 98,3% респондентов ответили положительно.

How are users satisfied with the quality of their app after Kotlin Multiplatform Mobile adoption?

Другим беспокойством является невозможность бесшовной поддержки собственных функций приложений. Тем не менее, если вы разрабатываете кроссплатформенное приложение, которому необходимо получить доступ к платформно-специфичным API, вы можете использовать ожидаемые и фактические объявления Kotlin. Они позволяют определить в общем коде, что вы «ожидаете» возможности вызова одной и той же функции на нескольких платформах, и предоставить «фактические» реализации, которые могут взаимодействовать с любыми платформно-специфичными библиотеками благодаря межплатформенной совместимости Kotlin с Java и Objective-C/Swift.

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

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

Самые популярные кроссплатформенные решения

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

Flutter

Flutter — кроссплатформенный фреймворк для разработки, созданный компанией Google и использующий язык программирования Dart. Flutter поддерживает такие нативные функции, как службы геолокации, функциональность камеры и доступ к жесткому диску. Если вам необходимо создать определенную функцию приложения, которая не поддерживается в Flutter, вы можете написать платформенно-специфический код, используя технологию Platform Channel.

Приложения, созданные с помощью Flutter, должны разделять все слои UX и UI, поэтому они могут не всегда ощущаться на 100% как нативные. Одним из лучших аспектов этого фреймворка является функция Hot Reload, которая позволяет разработчикам вносить изменения и мгновенно их видеть.

Этот фреймворк может быть лучшим вариантом в следующих ситуациях:

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

  • Приложение должно испытывать большую нагрузку на ЦП/ГП.

  • Вам нужно разработать 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, таких как SwiftUI и Jetpack Compose.

  • Легкий доступ к SDK для Android и iOS без ограничений.

Поделитесь логикой ваших приложений для iOS и Android. Начните с Kotlin Multiplatform Mobile.

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

  • Команда разработчиков призананого приложения Todoist начала использовать Kotlin Multiplatform Mobile для синхронизации логики сортировки приложения на нескольких платформах, объединив при этом преимущества создания кроссплатформенных и нативных приложений. Вы можете узнать больше об их опыте в этом видео.

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

  • Shopify смогла использовать Kotlin Multiplatform для совместного использования поразительных 95% своего кода, что также привело к значительному улучшению производительности. Аналогично, стартап Down Dog использует Kotlin Multiplatform для увеличения скорости разработки приложений, максимизируя количество кода, используемого на всех платформах: JVM, Native и JS.

Заключение

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

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

Последнее изменение: 11 мая 2023 г.
Режимы совместимости Разработка нативных и кроссплатформенных приложений: как выбрать?

© 2010–2023 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API