# Expo Release 当前项目已绑定新的 Expo / EAS 项目: - Owner: `ckken` - Slug: `sub2api-mobile` - Project ID: `acaedd05-5a2a-4843-a648-e025c08ce7b3` ## 已完成配置 - `app.json` 已配置 `owner` - `app.json` 已配置 `scheme = sub2apimobile` - `app.json` 已配置 `runtimeVersion.policy = appVersion` - `app.json` 已配置 `updates.url` - `package.json` 已包含 `expo-dev-client` - `eas.json` 已配置 `development / preview / production` 三套 profile ## 登录状态检查 ```bash npx expo whoami npx eas whoami ``` ## 关键结论 ### 1. Expo Go 适合什么 `Expo Go` 适合: - `npx expo start` - 本地 Metro 联调 - 快速查看 JS / RN 页面改动 ### 2. Expo Go 不适合什么 这次已经实测确认: - 不能把 `Expo Go` 当成 `EAS Update branch` 的稳定预览壳 - 想在 Expo Updates 里通过 branch 打开新版本,应该使用 `development build / dev client` ### 3. branch 预览要满足什么 要稳定预览 branch/update,需要同时满足: - 已发布 `eas update --branch ` - App 壳支持 `expo-updates` - App 壳包含 `expo-dev-client` 或对应原生构建 - 项目配置了自定义 `scheme` - `runtimeVersion` 与 update 一致 ## 本地开发 ```bash npm run start ``` 如果要用 dev client 连本地: ```bash npm run start:dev-client ``` ## 预览包 ```bash npm run eas:build:preview ``` ## Dev Client / 模拟器测试 开发构建: ```bash npm run eas:build:development ``` 也可以分平台: ```bash npm run eas:build:development:android npm run eas:build:development:ios ``` 当前 `development` profile 已配置: - `developmentClient: true` - `distribution: internal` - `ios.simulator: true` 适合先生成一个测试壳,后续再配合 `Expo / EAS Update` 做快速验证。 ## 推荐发布流程 ### 方案 A:本地开发调试 适用于: - UI 改动 - 页面白屏排查 - 路由调试 命令: ```bash npm run start ``` ### 方案 B:发 branch 给 dev client 验证 适用于: - 想在 Expo Updates 里看到新的 branch/update - 想让测试壳直接吃 OTA 步骤: ```bash npx eas-cli@latest update --branch preview --message "your message" ``` 然后在 dev client / development build 中验证对应 branch。 ### 方案 C:先出壳,再吃 OTA 如果还没有合适的 dev client: ```bash npm run eas:build:development:android npm run eas:build:development:ios ``` 装好开发壳后,再发: ```bash npx eas-cli@latest update --branch preview --message "your message" ``` ## 本次实战记录 本次已经验证通过的 OTA 发布命令: ```bash npx eas-cli@latest update --branch preview --message "align dev-client and user detail 2026-03-08" ``` 本次成功发布结果: - Branch: `preview` - Message: `align dev-client and user detail 2026-03-08` - Update group ID: `b6744438-929d-4206-b1eb-0887eaf3f97d` - iOS update ID: `019ccd68-a2af-7ba1-af68-7958f454e93c` - Android update ID: `019ccd68-a2af-7166-9e9d-9619bd1b8e0e` ## 常见问题 ### 1. 本地正常,发到 branch 后白屏 先排查: - 当前打开的是不是 `Expo Go` - 当前壳是不是 `development build` - 项目是否配置了 `scheme` - `runtimeVersion` 是否匹配 ### 2. branch 发上去了,但设备没更新 先确认: - 看的是不是正确 project - branch 是否是 `preview` - 壳的 channel 是否匹配 - 使用的是不是 dev client / 原生预览壳 ### 3. Deep link 报错 no custom scheme defined 说明 `app.json` 没有自定义 `scheme`,或者当前原生壳太旧,需要重新构建。 ## GitHub Actions 构建 仓库已提供工作流:`.github/workflows/eas-build.yml` 使用前需要在 GitHub 仓库 Secrets 里配置: - `EXPO_TOKEN` 触发方式: 1. 打开 GitHub 仓库的 `Actions` 2. 选择 `EAS Build` 3. 点击 `Run workflow` 4. 选择: - `profile`: `preview` 或 `production` - `platform`: `android` / `ios` / `all` 工作流会执行: ```bash npm ci npx eas build --non-interactive --profile --platform ``` ## 正式包 ```bash npm run eas:build:production ``` ## OTA 更新 预发: ```bash npx eas update --branch preview --message "preview update" ``` 正式: ```bash npx eas update --branch production --message "production update" ```