00 / 00

配置 App

修改 app.json、公开环境变量、scheme 和 EAS profile

拿到模板后,第一件事是把移动端身份改成你自己的产品。

配置总清单

移动端配置可以按这张表推进。用户只要把材料准备好,后面的代码改动和验证可以交给 AI 执行。

配置项用户需要准备写到哪里什么时候必须完成
App 身份App 名称、slug、scheme、iOS Bundle ID、Android packageapp.json开始真机和 EAS 构建前
Web/API 地址本地、preview、production 三套可访问地址.env.localeas.json 或 EAS Environment登录和 API 调试前
服务端信任NATIVE_APP_SCHEME、生产域名、登录回调地址products/01mvp/packages/config/.env 和生产环境登录、magic link、OAuth 前
EAS 项目Expo 账号、EAS project、需要时的 EXPO_TOKENapp.jsoneas.json、EAS Dashboard远程构建和 CI 前
Apple / GoogleApple Developer、App Store Connect、Google Play Console对应平台后台TestFlight、内测、上架前
RevenueCatProject、App、Product、Offering、Entitlement、public SDK keyEAS 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.slugExpo 项目 URL 和 EAS 项目标识的一部分your-app-mobile
expo.schemeDeep link、OAuth 回调、App 内跳转yourapp
expo.ios.bundleIdentifieriOS 唯一应用标识com.yourcompany.yourapp
expo.android.packageAndroid 唯一应用标识com.yourcompany.yourapp
expo.versionApp Store / Google Play 对外版本1.0.0
expo.extra.router.originExpo 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.png1024×1024 PNG,不能有透明边缘
expo.ios.icon./assets/icon.pngiOS 图标,可与通用图标相同
expo.android.adaptiveIcon.foregroundImage./assets/adaptive-icon.pngAndroid 自适应图标前景
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.jsonexpo.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.projectId
  • expo.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_*。

这篇文档有问题?