从 Expo Go 切换到开发构建

编辑页面

如何将你的 Expo Go 项目切换为使用开发构建。


For the complete documentation index, see llms.txt. Use this Use this file to discover all available pages.

要从 Expo Go 切换到开发构建,你需要按照以下步骤操作:

1

安装 expo-dev-client

Expo Dev Client 库包含启动器 UI(如下方截图所示)、开发菜单、用于测试空中更新的扩展等等。Expo Go 应用内置了开发菜单,这就是为什么你需要为开发构建单独安装它。

Terminal
npx expo install expo-dev-client
当你运行开发构建时,它会看起来像这样,只是会包含你的应用名称和图标,而不是 "Microfoam"。左侧展示的是 iOS 上的启动器 UI,右侧展示的是 Android 上的启动器 UI。中间可以看到一个运行在开发构建中的应用,并打开了可自定义的开发者菜单。

我们建议使用 expo-dev-client 以获得最佳开发体验,但不安装这个库也可以使用开发构建。如果不使用 dev client,请在 第 3 步 中使用 --dev-client 启动 bundler。否则,它将默认在 Expo Go 中打开。

2

构建你的原生应用

使用 Expo Go 时,你只需要构建 JavaScript bundle,但使用开发构建时,你还需要编译原生应用。使用 Expo,构建原生应用分为两部分:

  1. 生成原生的 android 和/或 ios 目录(关于何时以及如何执行,请阅读更多
  2. 使用原生构建工具编译原生应用

一旦你构建了原生应用,除非你添加或更新了包含原生代码的库,或者更改了任何原生代码或配置,例如应用名称,否则无需再次构建。

当你创建新项目时,androidios 目录会自动添加到 .gitignore 中,因此它们不会被提交到 Git。这确保你始终可以在本地或 CI 上根据需要使用 CNG 重新生成代码,并且永远不必手动编辑原生代码。

选项 1:在本地机器上构建

要在本地机器上构建原生应用,请按照 AndroidiOS 平台的环境搭建指南进行操作。这包括设置和配置原生构建工具,例如 Android 的 Android Studio 和 iOS 的 Xcode。

完成全部设置后,运行以下命令:

Terminal
npx expo run:android
Terminal
npx expo run:ios

默认情况下,这将把应用构建并安装到 Android 模拟器 / iOS 模拟器上。如果你需要在手机上运行构建,请将其连接到电脑(在 Android 上,如有提示请选择信任设备并允许 USB 调试;在 iOS 上,请启用开发者模式)然后使用 --device 标志运行上述命令。

选项 2:在 EAS 上构建

以下情况下,在 EAS 服务器上构建会很有用:

  • 你无法或不想搭建本地开发环境
  • 你想构建 iOS 应用但没有 Mac
  • 你想与团队共享开发构建
在 EAS 上构建

如何在 EAS 上创建你的开发构建

3

启动 bundler

在本地构建后,npx expo run:android|ios 会自动启动 bundler。但如果你关闭了 bundler,或者正在使用你之前构建的 dev client,请使用以下命令重新(启动)Metro bundler:

Terminal
npx expo start

当你的项目安装了 expo-dev-client 后,bundler 会输出 Using development build,并且它显示的二维码会链接到你创建的开发构建,而不是 Expo Go。

Prebuild

Prebuild 是 Expo 项目特有的一个概念。它指的是根据你的本地配置和属性生成 androidios 目录的过程。

什么时候应该运行 prebuild

如果你通过 npx expo run:android|ios 进行构建,并且更改了任何原生依赖或配置,例如:

  • 安装或更新包含原生代码的库
  • 更改 应用配置(app.json)
  • 升级你的 Expo SDK 版本

在这些情况下,你需要使用以下命令重新构建原生目录:

Terminal
npx expo prebuild --clean

然后,使用以下命令基于更新后的原生代码重新构建应用:

Terminal
npx expo run:android
Terminal
npx expo run:ios

什么时候不需要运行 prebuild

所有 Expo 构建工具(npx expo run:android|ioseas build)都会在找不到现有原生文件夹时自动执行 prebuild。这意味着当你第一次运行 npx expo run:android|ioseas build 时,无需手动运行 prebuild。

连续原生生成(CNG)

了解连续原生生成(CNG)和 Prebuild 的理念与优势