Введение
Expo — это фреймворк и платформа для универсальных приложений React. Это набор инструментов и сервисов, созданных на основе React Native и нативных платформ, которые помогают вам быстро разрабатывать, создавать, развертывать и выполнять итерации для iOS, Android и веб-приложений с использованием одной и той же базы кода JavaScript/TypeScript.
Рабочий процесс
Два подхода к созданию приложений с помощью инструментов Expo называются «управляемыми» и «голыми» рабочими процессами.
- С управляемым рабочим процессом вы только пишете инструменты и сервисы JavaScript /TypeScript, а Expo делает все остальное за вас.
- В голом рабочем процессе у вас есть полный контроль над каждым аспектом нативного проекта, и инструменты Expo не могут быть такими же полезными.
Управляемый рабочий процесс
Приложения создаются с помощью управляемого рабочего процесса с использованием expo-cli, клиента Expo на вашем мобильном устройстве и других служб, таких как: push-уведомления, служба сборки и беспроводные (OTA) обновления. Expo пытается максимально упростить процесс создания приложений, поэтому его называют управляемым рабочим процессом.
Разработчику, использующему управляемый рабочий процесс, не нужно использовать Xcode или Android Studio, он просто пишет код JavaScript и управляет конфигурацией таких вещей, как значок приложения и экран-заставка, через app.json. Expo SDK предоставляет все более полный набор API-интерфейсов, которые дают вам возможность доступа к таким функциям устройства, как камера, биометрическая аутентификация, файловая система, оптика и т. д. Хотя вы можете многое сделать с помощью управляемого рабочего процесса, вы не можете делать с ним все, поэтому вы можете столкнуться с ограничениями.
Что произойдет, если я столкнусь с ограничением?
Если вы дойдете до того, что вам нужно будет иметь полный контроль над собственным кодом в вашем приложении, вы можете « извлечь » (запустить expo eject
в своем проекте), и expo-cli предоставит все базовые собственные проекты и конфигурацию. Затем вы будете использовать голый рабочий процесс.
Ограничения управляемого рабочего процесса
Рабочий процесс не будет подходить для каждого возможного приложения. Во многих случаях его текущие ограничения могут не подходить для вашего проекта. Ниже приведен список известных нам ограничений, которые могут повлиять на ваше решение о том, подходит ли управляемый рабочий процесс для вашего проекта.
Доступны не все API для iOS и Android
Поддерживаются многие API устройств, но не все API iOS и Android уже доступны: например, нет поддержки Bluetooth или WebRTC. Покупки в приложении и интеграция Apple и Google Pay находятся в стадии разработки. Новые API-интерфейсы постоянно добавляются, но если что-то, что вам нужно, сейчас недоступно, вы можете использовать пустой рабочий процесс или следить за официальным блогом, чтобы увидеть примечания к выпуску обновления SDK.
SDK поддерживает не все типы фонового выполнения кода.
Фоновое выполнение — это возможность запускать код, когда приложение не находится на переднем плане или устройство находится в спящем режиме. Expo поддерживает фоновую геолокацию (включая геозону) и фоновый поиск, но еще не поддерживает фоновое аудио с элементами управления воспроизведением операционной системы, а push-уведомлениями нельзя управлять в фоновом режиме. Работа в процессе.
Размер приложения
Если вам нужно, чтобы размер вашего приложения был очень компактным, управляемый рабочий процесс может быть не лучшим выбором.
Размер приложения Expo, управляемого на iOS, составляет около 20 МБ (скачать), а на Android — около 15 МБ. Это связано с тем, что «управляемый» включает в себя множество API-интерфейсов независимо от того, используете ли вы их или нет: это позволяет вам распространять беспроводные обновления для использования новых API-интерфейсов, но это происходит за счет размера двоичного файла. Некоторые из включенных API привязаны к службам, которые вы можете не использовать, например, Facebook Mobile SDK включен для поддержки входа через Facebook и рекламы в Facebook вместе с Google Mobile SDK по тем же причинам. В будущем мы сделаем его настраиваемым, чтобы уменьшить размер двоичных файлов. Узнайте больше об управлении размером вашего приложения здесь.
Нативные библиотеки для интеграции с проприетарными сервисами обычно не включаются в SDK.
Что касается предыдущего пункта, Expo обычно избегает добавления нативных модулей в SDK, если они подключены к внешним проприетарным сервисам. В этих случаях разработчики смогут использовать простой рабочий процесс, удалив свой проект.
Единственная поддерживаемая служба push-уведомлений — это служба уведомлений Expo.
Если вы хотите использовать другой сервис push-уведомлений, например OneSignal, вместо сервиса/API push-уведомлений Expo, вам нужно использовать голый рабочий процесс.
Минимальные поддерживаемые версии ОС: Android 5+ и iOS 10+.
Если вам нужна поддержка более старых версий, вы не сможете использовать управляемый рабочий процесс.
Иногда бесплатные сборки могут быть поставлены в очередь
Вы можете легко создать свое собственное приложение для отправки в магазин, даже не устанавливая Xcode или Android Studio, используя бесплатный автономный сервис сборки, но иногда у него есть очередь в зависимости от того, сколько других людей собирают двоичный файл прямо сейчас. У вас может быть доступ к выделенной инфраструктуре сборки с «приоритетным» планом или, если хотите, вы можете запускать сборки на собственном CI.
Expo активно развивается, чтобы создавать решения для всех перечисленных выше ограничений.
Чистый рабочий процесс
В чистом рабочем процессе разработчик имеет полный контроль, наряду со сложностью, которая с ним связана. Вы можете использовать большинство API-интерфейсов в SDK Expo, но служба создания и простая настройка с помощью app.json пока не поддерживаются. Вы можете обратиться к учебным пособиям и руководствам, ориентированным на собственные приложения для iOS и Android, а также к React Native для поиска альтернатив.
Чистые (неуправляемые) ограничения рабочего процесса
В чистом рабочем процессе у вас есть полный доступ к базовым нативным проектам и любому нативному коду. Все, что вы можете сделать в нативном проекте, можно сделать в Expo с помощью простого рабочего процесса. Поэтому следующий список специально ориентирован на ограничения, существующие при использовании инструментов и сервисов Expo в чистом рабочем процессе.
Служба сборки работает только в управляемом рабочем процессе.
Чтобы создать двоичные файлы ваших приложений для распространения в Apple App Store и Google Play Store, вам придется выполнить те же действия, что и в любом нативном проекте, служба сборки Expo не может справиться с этим за вас. Expo работает над тем, чтобы в ближайшем будущем обеспечить чистую поддержку рабочего процесса для службы сборки.
Конфигурацию необходимо выполнять для каждого нативного проекта, а не один раз с помощью app.json.
Конфигурация значков приложений, экрана-заставки и т. д. должна быть настроена в нативных проектах для каждой платформы с помощью стандартных нативных инструментов, а не один раз с помощью простого объекта JSON.
Какой рабочий процесс выбрать
- Expo никогда не блокирует вас, вы можете «выбросить» в любое время, и ваш проект будет просто типичным нативным проектом с установленными и настроенными пакетами React Native и Expo SDK.
- Если вы новичок в мобильной разработке или в разработке в целом, мы рекомендуем использовать управляемый рабочий процесс. С родной цепочкой инструментов разработки связано огромное количество сложностей, а управляемый рабочий процесс позволяет вам управлять этой сложностью только в случае крайней необходимости.
- Кроме того, если вы более опытны, неплохо начинать каждый новый проект с управляемым рабочим процессом и «извлекать» только при необходимости.
Таким образом, используйте пустой рабочий процесс, когда это необходимо из-за ограничений, в противном случае используйте управляемый рабочий процесс и извлекайте проект, если это необходимо.
Сравнение рабочего процесса
Функции | Управляемый рабочий процесс | Чистый рабочий процесс |
---|---|---|
Разработка приложений только на JavaScript/TypeScript | ✅ | |
Выставка по созданию сборок iOS и Android | ✅ | ⏱ (в разработке) |
Сервис push-уведомлений об выставках | ✅ | ✅ |
Обновления выставки | ✅ | ✅ |
Разработать приложение с клиентом Expo | ✅ | ✅ |
Доступ к Экспо SDK | ✅ | ✅ |
Пользовательский собственный код и собственное управление зависимостями | ✅ | |
Разработка в Xcode и Android Studio | ✅ |
Вывод
В этом уроке мы сделали краткий обзор Expo Framework.
Прочитайте это руководство, чтобы установить Expo в Linux: Как установить платформу Expo для React в Linux .
Здесь вы можете найти все статьи, посвященные ЭКСПО: