Spec-Zone.ru › Kotlin 1.8

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

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

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

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

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

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

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

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

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

В нашем опросе Kotlin Multiplatform за период Q3-Q4 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 за период Q1-Q2 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, поэтому они не всегда могут полностью ощущаться как нативные. Одним из лучших аспектов этого фреймворка является функция 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.

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

Поделитесь логикой ваших приложений 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.

Заключение

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

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

Последнее изменение: 10 января 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