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

术语表

编辑页面

文档中使用的非显而易见术语列表,涉及 Expo 或更广泛的跨平台开发。


Android

由 Google 赞助、供 Android 设备使用的移动操作系统。

应用配置

位于项目根目录中名为 app.jsonapp.config.jsonapp.config.jsapp.config.ts 的文件。有关更多信息,请参阅 应用配置

此文件用于以下目的:

  • 配置 Expo CLI 的工作方式。
  • 在 EAS Update 中生成项目的公开 清单(可把它理解为原生应用里的 index.html)。
  • 列出会影响 npx expo prebuild 如何生成原生代码的 Expo 配置插件

app.json

一个 应用配置 文件。

Apple 能力

由 Apple 提供的云服务。应用必须在 Apple 开发者门户 中启用这些服务。

Apple 开发者门户

Apple 用于管理应用代码签名的官方网站。EAS Credentials 会自动处理开发者在开发应用时可能需要访问该网站的许多常见原因。

自动签署功能

EAS Build 的一项功能,可根据项目的 entitlements 文件自动启用或禁用 Apple 功能。请参阅 iOS 功能参考

自动链接

一种跨平台工具,用于通过原生包管理器自动将原生模块链接到原生应用。

  • 在 Android 上,该工具用于 android/app/build.gradle,并在 Gradle 同步过程中调用。
  • 在 iOS 上,该工具用于 CocoaPodsios/Podfile,并在执行 pod install 时调用。

自动链接有两个版本:Expo AutolinkingCommunity Autolinking

默认的 Prebuild 模板 包含对 Expo AutolinkingCommunity Autolinking 分支的支持。

Babel

用于移除运行时 JavaScript 引擎 中不可用语言特性的转译器。Metro 打包器 内部使用 Babel。

项目可以通过修改项目目录中的 babel.config.js 文件来配置 Babel 的使用方式。在使用 Expo CLI 时,这个文件是可选的。Expo 项目应扩展默认的 Babel 预设 babel-preset-expo

裸工作流

描述的是将原生项目(位于 androidios 目录中)纳入 Git 版本管理并手动维护的做法。这通常适用于 现有 React Native 应用,即你手动对原生项目进行修改。这样做的自由度很高,但维护成本也高。

这与使用应用配置和预构建相对,后者中的原生项目不进行版本管理。相反,它们会按需通过 npx expo prebuild 生成,这也是推荐的方式

Bun

一个 JavaScript 运行时,也是 Node.js 的可直接替代方案。Bun 也可用作 JavaScript 的包管理器。有关与 Expo 和 EAS 一起使用的更多信息,请参阅 使用 Bun 指南。

CocoaPods

用于将原生模块链接到原生 iOS 项目的 iOS 包管理器。该包管理器通过 ios/Podfile 文件进行配置,并在用户于 ios 目录中运行 pod install 时更新。

社区自动链接

这是 React Native 社区对 Expo 自动链接分支。模块的链接需求与 Expo 自动链接 不同,但实现相同。

配置内省

一种在内存中评估 npx expo prebuild 结果而不持久化任何代码更改的过程。它用于自动 Capability 签名,以在不生成任何原生代码的情况下确定 entitlements 文件的外观。该过程也用于 VS Code Expo Tools 扩展中,以调试配置修改

配置修改

附加到 应用配置 上、供 Prebuild 使用的异步函数。这些函数会接受单个原生文件进行修改,例如 AndroidManifest.xmlInfo.plist。配置修改会串联起来,并来自 @expo/config-plugins 包。有关更多信息,请参阅 配置插件

配置插件

用于将 配置修改器 附加到 应用配置 上、供 预构建 使用的 JavaScript 函数。有关更多信息,请参阅 配置插件

持续原生生成 (CNG)

描述从一组输入生成原生项目的抽象概念。在 Expo 的语境中,CNG 通过 prebuild 命令实现。更多信息请参阅 持续原生生成

create-expo-app

一个独立的命令行工具(CLI),用于启动已安装 expo 包的新 React Native 应用。更多信息请参阅 create-expo-app 参考

create-expo-module

一个独立的命令行工具(CLI),用于创建 Expo 模块并为现有模块添加平台支持。更多信息请参阅 create-expo-module 参考】【。

创建 React Native 应用

一个独立的命令行工具(CLI),用于启动已安装的 expo 包并生成原生代码的新 React Native 应用。该 CLI 还支持从 expo/examples 中的示例项目进行启动。

可以通过运行以下任一命令来使用此包:

  • npx create-expo-app
  • yarn create expo-app
  • npm create expo-app

危险修改器

prebuild 期间对原生项目应用不稳定更改的 修改器。使用这些修改器具有不可预测性,并且在 Expo SDK 的主要版本升级之间容易出现破坏性变更。有关更多信息,请参阅使用危险修改器

开发构建

开发构建是包含 expo-dev-client 包的应用调试构建。它类似于 Expo Go 的进化版,不受 Expo Go 的限制,并且可以根据应用需求进行定制。

这是使用 Expo 构建生产级应用的推荐方式。有关更多信息,请参阅 开发构建

开发客户端

expo-dev-client 是一个允许你创建开发构建并包含实用开发工具的库。你也可能会遇到“自定义开发客户端”这一说法,它是 开发构建 的同义词。

开发服务器

开发服务器(或 dev server)是本地启动的服务器,通常通过从 Expo CLI 运行 npx expo start 来启动。

开发服务器通常托管在 http://localhost:8081。它在 / 下提供一个 清单,客户端通过它来请求打包器提供的 JavaScript 包。

Expo 应用服务(EAS)

Expo 应用服务(EAS) 是为 Expo 和 React Native 应用深度集成的云服务,例如 EAS 构建EAS 提交EAS 更新EAS 元数据EAS 洞察EAS 托管EAS 工作流EAS 观测

EAS Build

EAS BuildEAS 的云服务,用于为 Expo 和 React Native 应用构建 Android 和 iOS 二进制文件。EAS Build 可用于构建 开发版本独立应用

EAS CLI

用于与 EAS 协作的命令行工具。有关更多信息,请参阅 EAS CLI 参考。

EAS 配置

用于配置 EAS CLIeas.json 文件。有关更多信息,请参阅 使用 eas.json 配置 EAS Build

EAS 托管

EAS 托管EAS 的云服务,可快速部署使用 Expo RouterReact Native Web 构建的 Web 项目。

EAS Insights

EAS InsightsEAS 的云服务,为 Expo 项目提供使用情况、性能和覆盖范围信息。它使用 expo-insights 库将事件从应用发送到 EAS Insights。

EAS 元数据

一个用于以 JSON 形式上传和下载 Apple App Store 元数据的命令行工具。该工具可在 EAS CLI 包中使用,应当用于改进 iOS 提交流程。有关更多信息,请参阅 EAS 元数据

EAS Observe

EAS Observe 是一项性能监控服务,用于跟踪应用在生产环境中的表现,包括冷启动和热启动时间、首次渲染时间以及交互可用时间。它使用 expo-observe 库从生产构建中收集指标,随后可在 Observe 仪表板中查看。

EAS 更新

  1. 来自 EAS 的云托管服务 EAS Update,用于 OTA 更新。
  2. 来自 EAS CLI 的 CLI 命令 eas update,用于将静态文件发布到云托管服务。

EAS 工作流

EAS 工作流EAS 的 CI/CD 服务,可让团队自动化重复任务,例如构建 Android 和 iOS 二进制文件、发布空中更新、提交到应用商店、使用 Maestro 运行端到端测试,以及将 Web 应用部署到 EAS 托管。工作流通过 .eas/workflows 目录下的 YAML 文件进行配置。

模拟器

模拟器用于描述计算机上的 Android 设备软件模拟器。通常,iOS 模拟器被称为 Simulator

入口点

入口点通常指用于加载应用的初始 JavaScript 文件。在使用 Expo CLI 的应用中,默认入口点是 ./node_modules/expo/AppEntry.js,它会简单地从项目根目录导入 App.js 文件,并将其注册为原生应用中的初始组件。

体验

应用的同义词,通常暗示其更偏向一次性使用且范围更小,有时带有艺术性和奇趣风格。

Expo Atlas

Expo Atlas 是用于可视化 JavaScript bundle 的工具。它用于检查 bundle 大小,并识别哪些库对生产 bundle 有贡献。

Expo 自动链接

原始的 自动链接 系统是为使用 expo-modules-core 的项目设计的。该系统根据库根目录中是否存在 expo-module.config.json 来链接模块。

Expo CLI

用于操作 Expo 的命令行工具。有关更多信息,请参阅 Expo CLI

Expo 客户端

Expo Go 应用的旧名称。

Expo Doctor

Expo Doctor 是一个用于诊断 Expo 项目问题的命令行工具。使用时,请在项目目录中运行 npx expo doctor

Expo 导出

指来自 Expo CLI 的命令 npx expo export。该命令用于打包应用的 JavaScript 和资源,然后将它们导出到一个静态目录中,静态目录可上传到 EAS 更新 等托管服务,并嵌入到 原生运行时 中供离线使用。

Expo 指纹

@expo/fingerprint 库会对决定项目原生构建的文件和配置进行哈希处理(应用依赖、定制原生代码、原生项目文件和配置)。该哈希代表原生层状态,因此工具可以在不重新构建的情况下判断某个 TypeScript/JavaScript bundle 是否与给定构建兼容。主要用于 EAS Update 的指纹运行时版本策略,以及用于 CI/CD 自动化的 EAS Workflows。

Expo Go

Android 和 iOS 应用,用作学习和试验 React Native 的沙盒环境。

由于其限制(例如无法包含自定义原生代码),不建议用于构建和分发生产应用。相反,请使用 开发构建

Expo 安装

指来自 Expo CLI 的命令 npx expo install。该命令用于安装包含可与项目当前安装的 expo 版本配合使用的 原生模块 的 npm 包。并非所有包都受支持。该命令封装了全局安装的 包管理器

Expo MCP 服务器

Expo MCP(模型上下文协议)服务器 是由 Expo 托管的远程服务器,可与 Claude Code、Cursor、VS Code 等 AI 辅助工具集成。它使这些工具能够直接与你的 Expo 项目交互。

Expo 模块配置

位于 原生模块 根目录中的名为 expo-module.config.json 的文件。有关更多信息,请参阅 模块配置

Expo 模块 API

Expo 模块 API 是一个跨平台 API,用于用 Kotlin 和 Swift 编写原生模块,为你的应用添加新能力。该 API 由库 expo-modules-core 提供,而该库包含在 expo 包中。

Expo Orbit

Expo Orbit 是一款适用于 macOS、Windows 和 Linux 的应用,可让你从 EAS、本地文件或 Snack 项目更快速地在设备或模拟器/仿真器上安装和启动构建或更新。

Expo Router

Expo Router 是适用于 React Native 和 Web 应用的基于文件的路由器。它允许你管理应用中各屏幕之间的导航,使用户能够通过在多个平台(Android、iOS 和 Web)上使用相同的组件,无缝地在应用 UI 的不同部分之间移动。

Expo SDK

一组包含 原生模块npm 包,为相机、推送通知、联系人、文件系统等设备/系统功能提供访问能力。

  • 每个包都尽可能支持 Android、iOS 和 Web。
  • 接口完全使用 TypeScript 编写。
  • Expo SDK 中的所有包都可以相互配合使用,并且可以安全地一起编译。
  • SDK 中的任何包都可以在任何 React Native 应用中使用,只需进行少量且通用的配置。请参阅如何安装 Expo 模块
  • 所有包都是开源的,可以自由定制。

Expo start

指来自 Expo CLI 的命令 npx expo start。该命令用于启动本地 开发服务器,由 客户端 连接以与 Metro 打包器 交互。

Fabric

React Native 的渲染系统,用于创建和管理原生视图。有关更多信息,请参阅 Fabric 渲染器

FYI

有时也称为 Expo FYI,是位于 expo.fyi 的一系列针对复杂问题的定制解决方案。FYI 链接被广泛用于 Expo 的开发者工具中,以帮助为用户提供更好的开发体验。

Gradle

Gradle 是一种用于多语言软件开发的构建自动化工具。它用于构建 Android 应用。它在编译、打包、测试、部署和发布等任务中控制开发流程。

Hermes 引擎

Meta 专为 React Native 使用而开发的 JavaScript 引擎。Hermes 具有提前静态优化和紧凑字节码,以提升面向移动设备的性能,并且是默认的 JS 引擎。

iOS

用于 iPhone、iPad 和 Apple TV 的操作系统。Expo Go 目前运行于 iPhone 和 iPad 的 iOS 上。

JavaScript 引擎

一种可在设备上执行 JavaScript 的原生包。在 React Native 中,我们主要使用 MetaHermes。其他选项包括 Apple 的 JavaScriptCore 以及 Google 的 V8。

JavaScriptCore 引擎

由 Apple 开发并内置于 iOSJavaScript 引擎。适用于 Android 的 React Native 也可以使用一个版本的 JavaScriptCore 以保持一致性。使用 JavaScriptCore 进行调试不如实现了 Chrome DevTools 协议 的 V8 或 Hermes 那么成熟。

链接

链接 可以指 类似于在 Web 上链接到网站那样,深度链接到应用中,也可以指 自动链接

本地 Expo CLI

@expo/cli 会随着 expo 包一起安装。这有时被称为“版本化 Expo CLI”,因为它安装在用户的项目中,而不是已弃用的、全局安装的 expo-cli

清单

Expo 应用清单类似于 Web 应用清单。它提供 Expo Go 需要知道如何运行应用的信息以及其他相关数据。

Meta

Meta 曾用名 Facebook,是开发 React NativeMetro BundlerHermes EngineYoga 等项目的公司。Expo 团队与 Meta 合作,以提供尽可能好的开发者体验。

Metro 打包器

用于将 JavaScript 文件和资源转换为可在 原生运行时 上运行的格式的打包器。该打包器由 Meta 维护,并用于 React Native(包括 Web)应用。有关更多信息,请参阅 Metro 文档

Metro 配置

用于配置 Metro 打包器metro.config.js 文件。在使用 Expo CLI 时,这应扩展包 @expo/metro-config。有关更多信息,请参阅 自定义 Metro

单一代码库

一个包含多个子项目、并通过包管理器相互关联的项目。单一代码库是维护跨平台应用代码库的绝佳方式。

原生目录

React Native 生态系统有成千上万的库。如果没有专门构建的工具,就很难了解这些库是什么、搜索它们、判断质量、试用它们,以及筛选出不适合你项目的库(有些不适用于 Expo,有些不适用于 Android 或 iOS)。React Native Directory 是一个旨在解决这一问题的网站,我们建议你使用它来寻找项目中要使用的包。

原生模块

用原生代码编写的模块,通过 JS 全局对象向 JavaScript 引擎暴露原生平台功能。通常通过 import { NativeModules } from 'react-native'; 访问这些功能。

原生运行时

包含 JavaScript 引擎 且能够运行 React 应用的原生应用。这包括 Expo Go开发构建独立应用,甚至像 Chrome 这样的 Web 浏览器。

npm

npmJavaScript 的包管理器 以及存放这些包的注册表。

包管理器

自动化安装、升级、配置和移除项目中库(也称为依赖项)的过程。参见 BunnpmpnpmYarn

包管理器工作区

Expo 用户推荐的 monorepo 方案。有关如何为受支持的包管理器配置工作区的更多信息,请参阅使用 Monorepo指南。

平台扩展

平台扩展是 Metro 打包器 的一项功能,它允许用户根据特定文件名按平台替换文件。例如,如果一个项目有 .index.js 文件和 .index.ios.js 文件,那么在为 iOS 打包时会使用 index.ios.js,而在为所有其他平台打包时会使用 index.js 文件。

默认情况下,平台扩展会在 @expo/metro-config 中按照以下公式解析:

  • Android: *.android.js, *.native.js, *.js
  • iOS: *.ios.js, *.native.js, *.js
  • Web: *.web.js, *.js

pnpm

pnpm 是一个 JavaScript 包管理器,专注于提高磁盘空间效率。

预构建

根据 应用配置 为 React Native 项目生成临时本地 androidios 目录的过程。该过程通过在项目目录中从 Expo CLI 运行命令 npx expo prebuild 来执行。

有关更多信息,请参见 预构建模板自动链接

预构建模板

React Native 项目模板作为 预构建 的第一步使用。该模板会随 Expo SDK 进行版本控制,并且会根据项目中安装的 expo 版本进行选择。模板克隆完成后,npx expo prebuild 会评估 应用配置,并运行会修改模板中各种文件的 配置修改

虽然可以使用 npx expo prebuild --template /path/to/template 标志来更改模板,但默认的预构建模板包含 npx expo prebuild 命令所依赖的重要初始默认值。

默认模板目前位于 expo-template-bare-minimum

发布

我们将“发布”作为“部署”的同义词使用。当你发布一个应用时,它会通过 Expo Go 变为可通过一个持久 URL 访问;或者在 独立应用 的情况下,它会更新该应用。

React Native

React Native 让你只用 JavaScript 就能构建移动应用。它使用与 React 相同的设计,使你能够通过声明式组件组合出丰富的移动 UI。

React Native Web

建立在 react-dom 之上的高性能抽象层,使 React Native 的核心原语能够在浏览器中运行。面向 Web 的 React Native(RNW)由 X 开发,目前用于其 主站Expo SDKExpo CLI 对 RNW 提供一等支持。

React Navigation

React Native 应用首选的导航库,由 Expo 团队开发并赞助。

远程调试

远程调试是 React Native 应用的一种已弃用的调试方式。如今更好的替代方案是使用 Hermes,因为你可以将 React Native DevTools 连接到它。

它也被称为异步 Chrome 调试,是一种用于调试 React Native 应用的实验性系统。该系统通过在 Chrome 标签页的 Web Worker 中执行应用的 JavaScript,然后通过 WebSocket 将原生命令发送到原生设备来工作。

模拟器

iOS 设备模拟器,可在 macOS 上运行(或在 Snack 中运行),让你在没有实体设备的情况下开发应用。

Slug

应用配置 中的 slug 是项目的一个便于 URL 使用的名称。它在你的 Expo 账户中是唯一的。

Snack

Snack 是一个基于浏览器的开发环境,你可以在其中构建 Expo 体验,而无需在手机或电脑上安装任何工具。

Software Mansion

位于波兰克拉科夫的一家开发机构,是 react-native-gesture-handlerreact-native-screensreact-native-reanimated 的维护者。Expo 的平台团队由来自 Software Mansion 的多名外包人员组成。Software Mansion 的所有核心 React Native 库都在 Expo Go 中受支持。

独立应用

“生产构建”的同义词。可提交到 Google Play 商店或 Apple App Store 的应用二进制文件。更多信息请参见 为应用商店构建项目在本地或自有基础设施上运行构建

商店配置

用于配置 EAS Metadatastore.config.json 文件。该文件可以通过现有的 App Store 条目使用 eas metadata:pull 生成。

Sweet API

用于编写 React Native 模块的 Swift 和 Kotlin API。此 API 由库 expo-modules-core 提供,而该库随 expo 包一同发布。更多信息请参见 模块 API

TypeScript

TypeScript 是一种强类型编程语言,建立在 JavaScript 之上,可为任何规模的项目提供更好的工具支持。Expo SDK 使用 TypeScript 编写,我们强烈推荐使用它。更多信息请参见我们的 TypeScript 指南

更新

传统上,Android 和 iOS 应用的更新方式是向 App Store 和 Play 商店提交一个更新后的二进制文件。更新功能允许你向应用推送更新,而无需承担向商店提交新版本的开销。更多信息请参见 发布 文档。

VS Code Expo Tools

用于改善开发者在处理应用配置文件时体验的 VS Code 扩展。此扩展为 应用配置商店配置Expo 模块配置EAS 配置 提供自动补全和智能提示。更多信息请参见 VS Code Expo Tools 扩展

Watchman

一个文件监听守护进程,Metro 可选择使用它来扫描并查询项目文件。Watchman 包含原生代码,作为全局安装时可能会引发问题。Watchman 由 Meta 维护。

webpack

Expo CLI 用于开发 react-native-web 应用的已弃用打包器。

Yarn

Yarn 是一个由 Meta 创建的 JavaScript 包管理器。它有两个主线版本:Yarn v1(Classic)Yarn Berry

Yoga

React Native 内部使用的原生跨平台库,用于向原生视图提供 CSS FlexBox 支持。React Native 的样式会传递给 Yoga,以对屏幕上的元素进行布局和样式设置。更多信息请参见 Yoga 文档。