Expo SDK 参考
编辑页面
使用 Expo SDK 包在你的 Expo 和 React Native 应用中访问设备和系统功能。
For the complete documentation index, see llms.txt. Use this Use this file to discover all available pages.
Expo SDK 是一组提供访问设备和系统功能的包,例如相机、联系人、位置、传感器、触觉反馈等。每个包都针对特定功能,可独立使用。所有包都可在安装了 expo 包的任何 React Native 应用中正常工作。
您可以使用 npx expo install 命令安装任意 Expo SDK 包。例如,以下命令会安装三个不同的包:
- npx expo install expo-camera expo-contacts expo-sensors安装一个或多个包后,您可以将它们导入到您的 JavaScript 代码中:
import { CameraView } from 'expo-camera'; import * as Contacts from 'expo-contacts'; import { Gyroscope } from 'expo-sensors';
这使您可以编写 Contacts.getContactsAsync() 并从设备读取联系人,读取陀螺仪传感器以检测设备移动,或者启动手机相机并拍照。
所有 Expo SDK 包都可在任何 React Native 应用中使用
Expo 应用本质上就是 React Native 应用,因此所有 Expo SDK 包都可在安装并配置了 expo 包的任何 React Native 应用中使用。创建支持 Expo SDK 包的 React Native 应用最简单的方法是使用 create-expo-app。不过,您也可以通过 npx install-expo-modules 命令为现有的 React Native 应用添加 Expo SDK 支持。
# 创建一个名为 my-app 的项目- npx create-expo-app my-app --template bare-minimum了解更多关于如何将使用 npx @react-native-community/cli@latest init 创建的项目配置为支持 Expo SDK 包。
了解如何在您的项目中安装 Expo SDK 包。
使用预发布版本
新的 Expo SDK 版本每年发布三次。在这些发布之间,我们会发布 expo 包以及所有 Expo SDK 包的预发布版本。预发布版本不被视为稳定版,仅应在您能接受遇到 bug 或其他问题风险的情况下使用。
金丝雀版本
金丝雀版本代表其发布时 main 分支状态的快照。金丝雀包版本名称中包含 -canary,以及日期和提交哈希,例如 55.0.0-canary-20260121-a63c0dd。要安装最新的金丝雀版本:
# 安装 expo 的 alpha 版本及其相关包- npm install expo@canary && npx expo install --fix您通常可以将单个包的预发布版本与 Expo SDK 的稳定版本一起使用。金丝雀级别的发布有时可能会出现不兼容或其他问题。如果您选择使用金丝雀包,并且已验证其在您的使用场景中表现良好,您可能希望关闭依赖验证警告。
Beta 版本
在每次 Expo SDK 发布之前,我们都会发布 expo 包以及所有 Expo SDK 包的 beta 版本。Beta 版本被认为比金丝雀版本稳定得多,我们鼓励开发者在自己的应用中尝试它们并分享反馈。Beta 版本在 npm 上使用 beta 标签,并遵循相关 更新日志 帖子中的说明。
每个 Expo SDK 版本都依赖于特定的 React Native 版本
| Expo SDK version | React Native version | React version | React Native Web version | React Native TV version | Minimum Node.js version |
|---|---|---|---|---|---|
| 55.0.0 | 0.83 | 19.2.0 | 0.21.0 | 0.83-stable | 20.19.x |
| 54.0.0 | 0.81 | 19.1.0 | 0.21.0 | 0.81-stable | 20.19.x |
| 53.0.0 | 0.79 | 19.0.0 | 0.20.0 | 0.79-stable | 20.18.x |
其他信息
Expo SDK 跟踪 React Native 发布的策略
- Expo SDK 版本每年发布三次,每个 Expo SDK 发布都对应一个 React Native 版本。通常是发布时最新的稳定版本。
- React Native 的发布节奏在其发展历史中有所变化,目前计划在 2025 年发布六次。在这样的节奏下,您可以预期每两个 React Native 版本都会对应一个 Expo SDK 版本。
- 即将发布的 Expo SDK 的预发布版本会很快支持最新版本的 React Native,通常在其发布当天即可支持。Expo SDK 团队的一名成员会参与每次 React Native 发布团队的工作,并负责持续更新 Expo 仓库中的 React Native 版本、验证兼容性,并将回归问题反馈给 Meta 团队。
为什么不在每次 React Native 发布后立即发布一个新的 Expo SDK 版本?
在 Expo,我们发现每年发布三个主要版本,能够在依赖我们开源工具的开发者所需的稳定性与创新之间取得良好平衡。Expo 与 Meta 在发布方面密切合作,我们将继续改进流程,以尽可能快地将最新的 Expo 和 React Native 功能带给您。
如果我需要最新 React Native 版本中的一个更改,但它还没有出现在 Expo SDK 发布中,该怎么办?
我们与 Meta 团队密切合作,确保任何紧急修复都会包含在最新 Expo SDK 所使用的 React Native 版本中。如果您的问题因为过于小众而无法被挑选进入现有版本,或者它涉及破坏性更改,那么您有两个选择:
- 使用
patch-package引入该修复。 - 使用 Expo SDK 的预发布版本。(示例)。
我可以在最新的 Expo SDK 中使用较旧版本的 React Native 吗?
Expo SDK 中的包旨在支持该 SDK 对应的目标 React Native 版本。通常,它们不支持较旧版本的 React Native,但也可能支持。当发布新的 React Native 版本时,Expo SDK 包的最新版本通常会更新以支持它。不过,这可能需要数周甚至更久,具体取决于该版本中的变更范围。
对 Android 和 iOS 版本的支持
每个版本的 Expo SDK 都支持 Android 和 iOS 的最低操作系统版本。对于 Android,定义了 compileSdkVersion,它会告诉 Gradle 使用哪个 Android SDK 版本来编译应用。这也意味着您可以使用该 SDK 版本以及之前版本中包含的 Android API 功能。对于 iOS,Xcode 会指定用于编译应用的最低 Xcode SDK 版本。
| Expo SDK version | Android version | compileSdkVersion | targetSdkVersion | iOS version | Xcode version |
|---|---|---|---|---|---|
| 55.0.0 | 7+ | 36 | 36 | 15.1+ | 26.2+ |
| 54.0.0 | 7+ | 36 | 36 | 15.1+ | 16.1+ |
| 53.0.0 | 7+ | 35 | 35 | 15.1+ | 16.0+ |
在决定是否升级 Expo SDK 版本时,请同时考虑 Expo 的 SDK 版本和应用商店提交要求,如上表所述。Google Play 商店和 Apple App Store 会定期提高最低所需的操作系统版本和 API 等级,而这些是提交新应用所必需的。Expo 无法控制应用商店的要求,您应查看 Google 和 Apple 以了解当前的应用商店提交要求。