配置 App
修改 app.json、公开环境变量、scheme 和 EAS profile
拿到模板后,第一件事是把移动端身份改成你自己的产品。
配置总清单
移动端配置可以按这张表推进。用户只要把材料准备好,后面的代码改动和验证可以交给 AI 执行。
| 配置项 | 用户需要准备 | 写到哪里 | 什么时候必须完成 |
|---|---|---|---|
| App 身份 | App 名称、slug、scheme、iOS Bundle ID、Android package | app.json | 开始真机和 EAS 构建前 |
| Web/API 地址 | 本地、preview、production 三套可访问地址 | .env.local、eas.json 或 EAS Environment | 登录和 API 调试前 |
| 服务端信任 | NATIVE_APP_SCHEME、生产域名、登录回调地址 | products/01mvp/packages/config/.env 和生产环境 | 登录、magic link、OAuth 前 |
| EAS 项目 | Expo 账号、EAS project、需要时的 EXPO_TOKEN | app.json、eas.json、EAS Dashboard | 远程构建和 CI 前 |
| Apple / Google | Apple Developer、App Store Connect、Google Play Console | 对应平台后台 | TestFlight、内测、上架前 |
| RevenueCat | Project、App、Product、Offering、Entitlement、public SDK key | EAS Environment 或 build profile | 开始内购前 |
| 推送通知 | 通知场景、用户开关、EAS projectId、APNs / FCM 凭据 | app.json、EAS Credentials、后端 token 表 | 做提醒或消息前 |
| 审核资料 | 隐私政策、服务条款、测试账号、截图、审核说明 | Web 页面和商店后台 | 提交商店前 |
不要把服务端 secret 放进 EXPO_PUBLIC_*。App 能读到的公开变量,用户最终也可以从安装包里看到。
app.json
修改 products/01mvp/apps/mobile/app.json:
{
"expo": {
"name": "Your App",
"slug": "your-app-mobile",
"scheme": "yourapp",
"ios": {
"bundleIdentifier": "com.yourcompany.yourapp"
},
"android": {
"package": "com.yourcompany.yourapp"
}
}
}建议 iOS bundleIdentifier 和 Android package 用反向域名格式。
要检查的字段:
| 字段 | 用途 | 示例 |
|---|---|---|
expo.name | 手机桌面和系统设置里的 App 名称 | Your App |
expo.slug | Expo 项目 URL 和 EAS 项目标识的一部分 | your-app-mobile |
expo.scheme | Deep link、OAuth 回调、App 内跳转 | yourapp |
expo.ios.bundleIdentifier | iOS 唯一应用标识 | com.yourcompany.yourapp |
expo.android.package | Android 唯一应用标识 | com.yourcompany.yourapp |
expo.version | App Store / Google Play 对外版本 | 1.0.0 |
expo.extra.router.origin | Expo Router Web origin 设置 | 模板默认 false |
如果你准备发布 iOS,先去 Apple Developer Portal 创建对应的 App ID,再把同一个值填到 ios.bundleIdentifier。Android 包名在 Google Play Console 创建应用时确认,发布后就不要改了。
Apple 账号申请、D-U-N-S 查询、Bundle ID、App ID、App Group 和签名的基础概念,见 Apple 平台配置。移动端落地步骤,见 Apple 与 iOS 配置。
图标与启动页
模板当前只配了基础启动页背景色。正式上架前,准备好这些资产:
| 配置 | 建议文件 | 说明 |
|---|---|---|
expo.icon | ./assets/icon.png | 1024×1024 PNG,不能有透明边缘 |
expo.ios.icon | ./assets/icon.png | iOS 图标,可与通用图标相同 |
expo.android.adaptiveIcon.foregroundImage | ./assets/adaptive-icon.png | Android 自适应图标前景 |
expo.android.adaptiveIcon.backgroundColor | 品牌底色 | 自适应图标背景色 |
expo-splash-screen.image | ./assets/splash.png | 启动页中心图 |
改图标、启动页或原生权限后,需要重新跑 EAS Build。EAS Update 只能推 JS 层更新,不能替换这些原生资产。
服务端 scheme
移动端登录需要服务端信任 App scheme。同步修改:
NATIVE_APP_SCHEME="yourapp"本地文件位置:
products/01mvp/packages/config/.env生产部署时,把同名变量放进 Web/API 的部署环境。NATIVE_APP_SCHEME 不是密钥,但改动后需要重新部署 Web/API,因为 Better Auth 会用它生成 trusted origins。
Expo 公开变量
本地移动端变量放在:
products/01mvp/apps/mobile/.env.local示例:
EXPO_PUBLIC_WEB_URL="https://yourapp.com"
EXPO_PUBLIC_SERVER_URL="https://yourapp.com/api"
EXPO_PUBLIC_APP_SCHEME="yourapp"
EXPO_PUBLIC_AUTH_COOKIE_PREFIX="yourapp-session"EXPO_PUBLIC_APP_SCHEME 要和 app.json 的 expo.scheme 一致。EXPO_PUBLIC_AUTH_COOKIE_PREFIX 要和服务端 AUTH_COOKIE_PREFIX 一致。
真机调试时不要使用 localhost。iOS Simulator 可以访问 Mac 的 localhost,Android Emulator 通常用 http://10.0.2.2:7001/api,真机建议使用局域网 IP 或 HTTPS tunnel。
EAS profile
生产构建变量在 products/01mvp/apps/mobile/eas.json:
{
"build": {
"production": {
"channel": "production",
"environment": "production",
"env": {
"EXPO_PUBLIC_WEB_URL": "https://yourapp.com",
"EXPO_PUBLIC_SERVER_URL": "https://yourapp.com/api",
"EXPO_PUBLIC_APP_SCHEME": "yourapp"
}
}
}
}如果你用 EAS Update,channel 要和后续 OTA 更新命令保持一致。
长期维护时,更推荐把 production 值放到 EAS Environment,再在 eas.json 的 profile 里指定 environment: "production"。这样 CI 和本机不用提交 .env,也能拿到同一套构建变量。
执行 eas init 后,EAS 可能会写入:
expo.extra.eas.projectIdexpo.updates.url
这两个值必须属于你自己的 EAS 项目。克隆模板后不要沿用别人的 project id。
什么时候需要 development build
Expo Go 适合看纯 JS 页面。下列情况需要 development build:
- 使用 RevenueCat、Widget、原生登录、推送等原生模块
- 修改 App 名称、图标、Bundle ID、scheme 或启动页
- 调试 Universal Links、App Links、原生权限或商店构建
创建 development build:
vpr @01mvp/mobile#eas:build:development配置完成后的最小验收
vpr @01mvp/mobile#type-check
vpr @01mvp/mobile#test
vpr @01mvp/mobile#build这三条命令通过后,再进入真机调试和 EAS 构建。
复制给 AI
请帮我检查 01MVP mobile 的配置是否已经适合 development / preview / production 三个阶段。
我会提供 App 名称、scheme、iOS Bundle ID、Android package、生产 Web/API 地址、RevenueCat entitlement、是否需要推送、是否要上 TestFlight。
请你只修改必要配置,并列出还缺哪些账号、凭证或商店资料。
不要把服务端 secret 写进 EXPO_PUBLIC_*。这篇文档有问题?