Reference version

This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.

Expo SDK 参考

编辑页面

在你的 Expo 和 React Native 应用中使用 Expo SDK 包来访问设备和系统功能。


Expo SDK 是一组提供对设备和系统功能访问的包,例如相机、联系人、位置、传感器、触觉反馈等。每个包都针对特定功能,可以独立使用。安装了 expo 包后,所有包都可以在任何 React Native 应用中工作。

您可以使用 npx expo install 命令安装任意 Expo SDK 包。例如,可以使用以下命令安装三个不同的包:

Terminal
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 包,所有 Expo SDK 包都可以在任何 React Native 应用中使用。创建支持 Expo SDK 包的 React Native 应用最简单的方法是使用 create-expo-app。不过,你也可以使用 npx install-expo-modules 命令为现有的 React Native 应用添加 Expo SDK 支持。

Terminal
# 创建一个名为 my-app 的项目
npx create-expo-app my-app --template bare-minimum
在现有 React Native 应用中安装 Expo SDK 包

了解更多关于将使用 npx @react-native-community/cli@latest init 创建的项目配置为 Expo SDK 包。

使用库

了解如何在你的项目中安装 Expo SDK 包。

使用预发布版本

新的 Expo SDK 版本每年发布三次。在这些发布之间,我们会发布 expo 包以及所有 Expo SDK 包的预发布版本。预发布版本不被视为稳定版本,只有当你能够接受遇到 bug 或其他问题的风险时才应使用。

Canary 发布

Canary 发布代表它们发布时 main 分支状态的一个快照。Canary 包版本的名称中包含 -canary,以及日期和提交哈希,例如 57.0.0-canary-20260526-13e89ca。要安装最新的 canary 发布版本:

Terminal
# 安装 expo 及其相关包的 alpha 版本
npm install expo@canary && npx expo install --fix

你通常可以在 Expo SDK 的稳定发布版本中使用单个包的预发布版本。canary 级别的发布偶尔可能会出现不兼容或其他问题。如果你选择使用 canary 包,并且在确认它适合你的使用场景后,你可能希望关闭依赖项验证警告

Beta 发布

在每次 Expo SDK 发布之前,我们都会发布 expo 包以及所有 Expo SDK 包的 beta 版本。Beta 发布被认为比 canary 发布稳定得多,我们鼓励开发者在自己的应用中试用,并分享反馈。Beta 发布在 npm 上使用 beta 标签,并遵循相关 更新日志 文章中的说明。

每个 Expo SDK 版本都依赖于一个 React Native 版本

Expo SDK versionReact Native versionReact versionReact Native Web versionReact Native TV version
Minimum Node.js version
57.0.00.8619.2.30.21.00.86-stable22.13.x
56.0.00.8519.2.30.21.00.85-stable20.19.x
55.0.00.8319.2.00.21.00.83-stable20.19.x
54.0.00.8119.1.00.21.00.81-stable20.19.x

其他信息

Expo SDK 跟踪 React Native 发布的策略
  • 每个 Expo SDK 版本都以单一的 React Native 版本为目标。通常这是发布时最新的稳定版本。
  • React Native 目前每年发布六次,并且力求每次发布都不包含破坏性变更。
  • Expo SDK 的发布也力求遵循这一节奏。
  • 即将发布的 Expo SDK 的预发布版本会很快加入对最新 React Native 版本的支持,通常在该版本发布的同一天。Expo SDK 团队的一名成员会参与每次 React Native 发布团队的工作,负责持续更新 Expo 仓库中的 React Native 版本、验证兼容性,并将回归问题反馈给 React Native 团队。
如果我需要最新 React Native 版本中的某个变更,但它还没有出现在某个 Expo SDK 版本中,怎么办?

React Native 发布团队中的 Expo 工程师会确保任何紧急修复都包含在最新 Expo SDK 所使用的 React Native 版本中。如果你的特定修复不会被 cherry-pick 到现有发布中,可能是因为它不被视为关键修复,或者因为它涉及破坏性变更,那么你有两个选择:

  1. 使用 patch-package 来引入该修复。
  2. 使用 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 versionAndroid versioncompileSdkVersiontargetSdkVersioniOS versionXcode version
57.0.07+363616.4+26.4+
56.0.07+363616.4+26.4+
55.0.07+363615.1+26.2+
54.0.07+363615.1+16.1+

在决定是否升级 Expo SDK 版本时,请同时考虑 Expo 的 SDK 版本和应用商店提交要求,如上表所述。Google Play 商店和 Apple App Store 会定期提高新应用提交所需的最低操作系统版本和 API 级别。Expo 无法控制应用商店的要求,你应查看 GoogleApple 以了解当前的商店提交要求。