Можете ли вы добавить библиотеки с нативными зависимостями в нативный проект Expo реакции?
Можете ли вы использовать библиотеки, такие как https://github.com/tolu360/react-native-google-places в проекте Expo? Я предполагаю, что любую библиотеку npm можно добавить, но как насчет библиотек, подобных этому средству выбора мест Google, который требует шагов после установки, чтобы связать нативные проекты. Они поддерживаются с Экспо?
1 ответ
Проекты Regular Expo написаны только на JavaScript и не поддерживают пакеты npm, содержащие Objective-C или Java. Тем не менее, Expo предоставляет расширенный SDK под названием ExpoKit, когда вам абсолютно необходимо использовать собственный нативный код. Из документов Экспо:
Обычно приложения Expo написаны на чистом JS и никогда не "выпадают" на нативный уровень iOS или Android. Это основа философии Экспо, и она является частью того, что делает Экспо быстрым и мощным в использовании.
Однако в некоторых случаях продвинутые разработчики нуждаются в собственных возможностях, выходящих за рамки возможностей Expo. Наиболее распространенная ситуация - когда для проекта требуется специальный Native Module, который не поддерживается React Native Core или Expo SDK.
Вы можете "отсоединить" ваш проект Expo для создания проектов Xcode и Android Studio, которые содержат ExpoKit. Затем вы добавите пользовательский Objective-C или Java так же, как и в любой другой проект Xcode или Android Studio.
Тем не менее, документы Expo также предупреждают о некоторых недостатках написания собственного нативного кода; многие функции часто могут быть хорошо реализованы в JS, что позволяет вам сохранить все преимущества стандартного проекта Expo.
Предупреждение: мы не рекомендуем большинству наших разработчиков идти по этому пути, так как мы считаем, что почти все, что вам нужно сделать, лучше выполнить кросс-платформенным способом с JS.
Запись в JS позволяет вам наилучшим образом воспользоваться преимуществами развертывания беспроводного кода и пользоваться постоянными обновлениями и поддержкой со стороны Expo. Это следует делать только в том случае, если у вас есть особые требования к нативному коду, которые Expo не будет хорошо поддерживать, такие как (например) специализированная обработка видео с интенсивным использованием процессора, которая должна выполняться локально на устройстве.