This is documentation for the next SDK version. For up-to-date documentation, see the latest version (SDK 55).
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 包,所有 Expo SDK 包都可以在任何 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 |
其他信息
用于跟踪 React Native 发布的 Expo SDK 政策
- 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 以了解当前的商店提交要求。