从 Expo Go 转换为开发构建

编辑

如何将你的 Expo Go 项目迁移以使用开发构建。


要从 Expo Go 迁移到开发构建,您需要按照以下步骤进行:

1

安装 expo-dev-client

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

Terminal
npx expo install expo-dev-client
当你运行一个开发构建时,它会看起来像这样,只是把 "Microfoam" 替换为你的应用名称和图标。左侧是 iOS 的启动器用户界面,右侧是 Android 的。在中间位置,你可以看到一个在开发构建中运行的应用,且自定义的开发者菜单已打开。

我们建议使用 expo-dev-client 以获得最佳开发体验,但也可以在不安装此库的情况下使用开发构建。如果不使用开发客户端,在 Step 3 中,请使用 --dev-client 启动 bundler。否则,它将默认在 Expo Go 中打开。

2

构建您的原生应用

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

  1. 生成原生的 android 和/或 ios 目录(read more 何时以及如何需要这样做)
  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 上创建你的 Development Build

3

启动打包程序

本地构建完成后,npx expo run:android|ios 将自动启动 bundler。但如果你已经关闭了 bundler,或是在开发客户端上工作,且你之前构建了开发客户端,请使用以下命令(重新)启动 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)和预构建的理念与好处