在现有 React Native 应用中使用 Expo 概述
编辑
学习如何在现有的 React Native 应用中使用 Expo 工具和服务。
如果您有一个不使用任何 Expo 工具的 React Native 应用,您可能会想知道 Expo 能为您提供什么,您为什么可能希望使用 Expo 工具和服务,以及如何开始。
Expo 提供的所有工具和服务在任何 React Native 应用中都表现良好。
您可以使用 EAS 快速设置专业 CI/CD 工作流,以构建、审查、部署和更新您的应用。 Expo CLI 为 React Native 提供了最佳的命令行体验。 Expo SDK 是 React Native 的扩展标准库。它为开发者提供了高质量、维护良好的原生库,使用一致的 API 约定使其更易于学习和使用。
如果您曾经为 React Native 编写过原生模块,您会惊讶于使用 Expo Modules API 提供的标准 Swift 和 Kotlin DSL 构建和维护模块是多么容易。
还有很多内容可以探索,下面的链接将帮助您了解可用的选项。
渐进式采用步骤
以下是四个建议的渐进式采用阶段。这些阶段通常从快速更改以改善开发者体验开始,逐渐过渡到更重要的工作流和代码库优化。
只有第一阶段 — 前提条件 — 是其他阶段所必需的。遵循其指示后,您可以跳过到与您采用 Expo 目标最相关的工具和服务。
前提条件
这些第一步是后来采用 Expo 工具和服务所必需的:
要解锁 Expo 功能,您需要在现有的 React Native 项目中安装 expo 包。本指南提供了自动和手动安装步骤。
迁移到 Expo CLI 是对 @react-native-community/cli 的替代。它与所有 Expo 工具和服务完全兼容。本指南解释了好处,并提供编译命令,以在安装 expo 包后启动您的开发服务器。
快速成功
以下内容帮助改善开发体验并需要配置:
使用 Expo SDK 提供的许多库之一,这是一套广泛的库,可访问原生 API。
expo-dev-client 提供将 Expo Go 风格的应用启动器接口访问到您的调试应用变体中。了解如何在现有的 React Native 项目中安装和配置它。
使用 Expo Modules API 使用 Swift 和 Kotlin 编写原生模块。
查看您需要对原生项目进行升级的所有更改的逐文件差异,以将其升级到下一个 Expo SDK 和 React Native 版本。
新工作流
一旦您的应用安装了 expo 包,您可以通过单个命令将您的应用提交到应用商店,或更新配置 expo-updates 库来管理应用代码的远程更新:
通过单个命令构建并提交您的应用到应用商店。
了解如何安装和配置 expo-updates 以管理远程更新并启用 PR 预览。
新思维方式
以下有助于您项目的长期可维护性、原生代码维护和更轻松的升级:
了解如何通过根据配置按需生成来简化维护您的原生项目。
Expo Router 是一个基于文件的路由库,提供组织良好的导航层次结构、自动深度链接支持等优势。
常见问题
在我的现有 React Native 项目中采用 Expo 需要多长时间?
采用 Expo 不必一步到位。您可以从 快速成功 开始,然后再转向更复杂的部分。您还可以根据项目的实际需要选择和选择希望采用的功能。
使用 Expo 在我的 React Native 应用中我将获得什么?
在您现有的 React Native 应用中采纳 Expo 工具可以帮助您通过 Expo SDK 加速开发,通过 CNG 精简原生代码维护和升级,通过 EAS Update 实现更快的部署等等。
谁在使用 Expo?
顶级公司在全球范围内使用 Expo,服务数百万终端用户。有关更多信息,请查看我们的 Expo 展示。
采用 Expo 会对我的应用大小产生什么影响?
expo 包占用的空间很小,因为它仅包括每个应用中所需的一小部分模块,以及内置的自动链接基础设施和其他 Expo SDK 库。有关如何确定应用实际大小的更多信息,请参见 了解应用大小。
为什么 React Native 推荐使用 Expo?
大多数 React Native 开发者在构建应用时会解决一些常见问题,例如实现导航、访问原生 API、升级到新版本等。这需要使用一组特定的工具和库来构建和维护您的应用 — 这意味着您正在创建自己的框架。
Expo 通过提供一组原语来解决这些问题,帮助您(开发者)专注于构建应用。它还提供工具以在开发中更快迭代。有关更多信息,请参见 为什么 React Native 推荐使用框架。
我必须放弃我的原生项目才能使用 Expo 吗?
默认情况下,使用 create-expo-app 创建的 Expo 项目使用 连续原生生成 (CNG) 并且不包含 android 和 ios 原生目录。如果您在现有的 React Native 应用中逐步采用 Expo,您不必删除这些目录。您可以使用 npx expo run:[android|ios] 作为 @react-native-community/cli 提供的命令的替代方案,以本地编译您的应用,并保留原生项目的配置。
我在使用 CodePush。我可以继续在 Expo 中使用它吗?
CodePush 将在 2025 年 3 月被退休,并与 React Native 的新架构不兼容,因此,从长远来看,我们推荐切换到 EAS 更新以管理您应用代码的远程更新。不过,您可以今天在启用 CodePush 的应用中开始使用 Expo 工具,包括 Expo SDK、Expo CLI、EAS Build 等。
我必须使用 EAS 构建吗?
Expo 应用服务 (EAS) 是深入集成的云服务,提供构建、测试和部署应用的工具。
虽然我们建议使用 EAS 以便与团队成员进行顺畅协作和快速分发,但您可以通过本地编译您的应用、在 CI 上编译,或以任何您喜欢的方式进行编译。