Expo SDK 参考
编辑页面
在你的 Expo 和 React Native 应用中,使用 Expo SDK 包访问设备和系统功能。
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 命令将 Expo SDK 支持添加到现有的 React Native 应用中。
# 创建一个名为 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,以及日期和提交哈希,例如 53.0.0-canary-20240418-8d74597。要安装最新的金丝雀版本:
# 安装 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 |
|---|---|---|---|---|---|
| 53.0.0 | 0.79 | 19.0.0 | 0.20.0 | 0.79-stable | 20.18.x |
| 52.0.0 | 0.76 | 18.3.1 | 0.19.13 | 0.77-stable | 20.18.x |
| 51.0.0 | 0.74 | 18.2.0 | 0.19.10 | 0.74-stable | 18.20.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 版本中。如果你的问题因为较为小众,或者涉及破坏性变更,而不会被 cherry-pick 到现有版本中,那么你有两个选择:
- 使用
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 |
|---|---|---|---|---|---|
| 53.0.0 | 7+ | 35 | 35 | 15.1+ | 16.0+ |
| 52.0.0 | 7+ | 35 | 34 | 15.1+ | 16.0+ |
| 51.0.0 | 6+ | 34 | 34 | 13.4+ | 15.4 - 16.2 |
在决定是否升级 Expo SDK 版本时,请同时考虑 Expo 的 SDK 版本以及应用商店提交要求,如上表所述。Google Play 商店和 Apple App Store 会定期提高新应用提交所需的最低操作系统版本和 API 级别。Expo 无法控制应用商店的要求,你应查看 Google 和 Apple 获取当前的应用商店提交要求。