工具、工作流和扩展
编辑页面
了解在使用开发构建时可用的不同工具、工作流和扩展。
For the complete documentation index, see llms.txt. Use this Use this file to discover all available pages.
开发构建允许你快速迭代。不过,你可以扩展开发构建的功能,以便在团队协作时提供更好的开发体验,或者根据你的需求自定义构建。
工具
隧道 URL
有时,受限的网络条件会使连接到开发服务器变得困难。npx expo start 命令会将你的开发服务器暴露在一个可公开访问的 URL 上,可通过全球各地的防火墙访问。如果你无法使用默认的 LAN 选项连接到开发服务器,或者你希望在开发过程中获得实现反馈,这个选项会很有帮助。
要获取隧道 URL,请在命令行中向 npx expo start 传递 --tunnel 标志。
已发布更新
EAS CLI 的 eas update 命令会将你的 JavaScript 和资源文件的当前状态打包成一个经过优化的“更新”。该更新由 Expo 存储在托管服务上。你的应用的开发构建可以加载已发布更新,而无需检出特定提交或让开发机器持续运行。
手动输入更新的 URL
当开发构建启动时,它会提供用于加载开发服务器的界面,或者“手动输入 URL”。你可以手动提供一个 URL,以启动特定分支。该 URL 采用以下格式:
https://u.expo.dev/[your-project-id]?channel-name=[channel-name] # 示例 https://u.expo.dev/F767ADF57-B487-4D8F-9522-85549C39F43F?channel-name=main
要获取你的项目 ID,请使用 应用配置中的 expo.updates.url 字段里的 URL。要查看通道列表,请运行 eas channel:list。
深入链接到更新的 URL
你可以通过打开形如 {scheme}://expo-development-client/?url={manifestUrl} 的 URL,在具有与你的自定义客户端兼容构建的设备上加载你的应用。你需要传递以下参数:
| 参数 | 值 |
|---|---|
scheme | 你的客户端的 URL scheme(默认是 exp+{slug},其中 slug 是在应用配置中设置的值) |
manifestUrl | 要加载的更新清单的 URL 编码 URL。该 URL 将是 https://u.expo.dev/[your-project-id]?channel-name=[channel-name] |
示例:
exp+app-slug://expo-development-client/?url=https%3A%2F%2Fu.expo.dev%2F767ADF57-B487-4D8F-9522-85549C39F43F%2F%3Fchannel-name%3Dmain
在上面的示例中,scheme 是 exp+app-slug,而 manifestUrl 是一个 ID 为 F767ADF57-B487-4D8F-9522-85549C39F43F、频道为 main 的项目。
在自动化场景中使用更新深层链接
当在模拟器或仿真器上通过自动化启动开发构建中的更新 URL 时,例如在 CI/CD 工作流中,你可以在 URL 中添加 disableOnboarding=1 查询参数,以跳过安装后首次启动开发构建时出现的引导屏幕。
应用特定的深层链接
在开发构建中测试深层链接时,例如在 Expo Router 应用中导航到特定屏幕,或在 Oauth 登录流程中测试重定向回你的应用时,请像深层链接到你应用的独立构建一样准确地构造 URL(例如,myscheme://path/to/screen)。
应用特定的深层链接要生效,你的项目必须已经在开发构建中打开。目前还不支持使用应用特定的深层链接进行冷启动开发构建。避免在应用特定深层链接的路径中使用 expo-development-client,因为它是用于启动更新 URL 的保留路径。
二维码
你可以使用我们的端点生成一个二维码,使其能够被开发构建轻松加载。
当向 https://qr.expo.dev/development-client 发送请求并提供诸如 appScheme 和 url 等查询参数时,将返回一个包含二维码的 SVG 图像响应,该二维码可被轻松扫描,以在你的开发构建中加载你项目的某个版本。
| 参数 | 值 |
|---|---|
appScheme | 你的开发构建的 URL 编码深层链接 scheme(默认是 exp+{slug},其中 slug 是在应用配置中设置的值) |
url | 要加载的更新清单的 URL 编码 URL。该 URL 将是 https://u.expo.dev/[your-project-id]?channel-name=[channel-name] |
示例:
https://qr.expo.dev/development-client?appScheme=exp%2Bapps-slug&url=https%3A%2F%2Fu.expo.dev%2FF767ADF57-B487-4D8F-9522-85549C39F43F0%3Fchannel-name%3Dmain
在上面的示例中,scheme 是 exp+app-slug,而 url 是一个 ID 为 F767ADF57-B487-4D8F-9522-85549C39F43F、频道为 main 的项目。
示例工作流
以下是一些工作流示例,可帮助你的团队充分利用开发构建。如果你还有其他对其他团队也有用的工作流,提交 PR 来分享你的经验!
PR 预览
你可以设置 CI 流程,在每次拉取请求更新时发布一个 EAS Update,并添加一个用于在兼容的开发构建中查看更改的二维码。
请参阅在拉取请求上发布应用预览的说明,使用 GitHub Actions 在你的项目中实现此工作流,或将其作为你所选 CI 的模板。
扩展
扩展允许你为开发客户端增加额外功能。
扩展开发菜单
可以使用 registerDevMenuItems API 来扩展开发菜单,添加额外按钮:
import { registerDevMenuItems } from 'expo-dev-menu'; const devMenuItems = [ { name: '我的自定义按钮', callback: () => console.log('你好,世界!'), }, ]; registerDevMenuItems(devMenuItems);
这将在开发菜单中创建一个新部分,其中包含你注册的按钮:
对
registerDevMenuItems的后续调用将覆盖之前的所有条目。
EAS Update
EAS Update 扩展提供了在开发客户端中查看和加载已发布更新的能力。要安装它,你需要最新发布版的 expo-updates:
- npx expo install expo-dev-client expo-updates配置 EAS Update
如果你尚未在项目中配置 EAS Updates,可以在这里找到更多操作说明。
现在你可以通过 Extensions 面板在开发构建中查看和加载 EAS Updates。
在应用配置中设置 runtimeVersion
当你为项目创建开发构建时,你会获得一个稳定的环境,用于加载在 JavaScript 中定义的应用更改或其他与资源相关的更改。你的应用中的其他更改,无论是直接在 android 和 ios 目录中定义的,还是由你选择安装的包或 SDK 所引入的,都需要你为开发构建创建一个新的构建。
为了在应用的 JavaScript 层和原生层之间强制执行 API 契约,你应在应用配置中设置 runtimeVersion 值。你创建的每个构建都会嵌入此值,并且只会加载具有相同 runtimeVersion 的 bundle,无论是在开发环境还是生产环境中。