Expo SDK 参考
编辑页面
在你的 Expo 和 React Native 应用中使用 Expo SDK 包访问设备和系统功能。
For the complete documentation index, see llms.txt. 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 { Contact } from 'expo-contacts'; import { Gyroscope } from 'expo-sensors';
这使你可以编写 Contact.getAll() 并从设备读取联系人,读取陀螺仪传感器以检测设备移动,或者启动手机相机并拍照。
所有 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,以及日期和提交哈希,例如 56.0.0-canary-20260506-03817f5。要安装最新的金丝雀发布:
# 安装 expo 及其相关包的 canary 版本- 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 |
|---|---|---|---|---|---|
| 56.0.0 | 0.85 | 19.2.3 | 0.21.0 | 0.85-stable | 22.13.x |
| 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 |
附加信息
Expo SDK 跟踪 React Native 发布的策略
- Expo SDK 版本每年发布三次,并且每个 Expo SDK 发布都面向单一的 React Native 版本。通常这是发布时的最新稳定版。
- React Native 的发布节奏在其历史上有所变化,目前预计 2025 年将发布 6 次。在这种节奏下,你可以预期每两个 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 |
|---|---|---|---|---|---|
| 56.0.0 | 7+ | 36 | 36 | 16.4+ | 26.4+ |
| 55.0.0 | 7+ | 36 | 36 | 15.1+ | 26.2+ |
| 54.0.0 | 7+ | 36 | 36 | 15.1+ | 16.1+ |
在决定是否升级你的 Expo SDK 版本时,请同时考虑 Expo 的 SDK 版本和应用商店提交要求,如上表所述。Google Play 商店和 Apple App Store 会定期提高其最低要求的操作系统版本和 API 级别,而这些是新应用提交所必需的。Expo 无法控制应用商店的要求,你应查看 Google 和 Apple 以了解当前的商店提交要求。