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 命令为现有的 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,以及日期和提交哈希,例如 54.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 |
|---|---|---|---|---|---|
| 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 |
| 52.0.0 | 0.76 | 18.3.1 | 0.19.13 | 0.77-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 |
|---|---|---|---|---|---|
| 54.0.0 | 7+ | 36 | 36 | 15.1+ | 16.1+ |
| 53.0.0 | 7+ | 35 | 35 | 15.1+ | 16.0+ |
| 52.0.0 | 7+ | 35 | 34 | 15.1+ | 16.0+ |
在决定是否升级 Expo SDK 版本时,请同时考虑 Expo 的 SDK 版本和应用商店提交通要求,如上表所述。Google Play 商店和 Apple App Store 会定期提高其最低要求的操作系统版本和 API 等级,而这些是新应用提交所必需的。Expo 无法控制应用商店的要求,你应查看 Google 和 Apple 以了解当前的应用商店提交通要求。