移动端快速开始
本地跑起 Expo 应用
准备
无论是 Web 端还是移动端,先完成工作区级别的初始化:
克隆仓库
克隆仓库并进入项目根目录,以便开始开发:
# clone 仓库
git clone https://github.com/sunshineLixun/easystarter.git your-project-name
# 进入项目根目录
cd your-project-name
# 移除默认的 origin
git remote remove origin
# 添加你自己的 origin
git remote add origin https://github.com/your-username/your-project-name.git
# 推送到 origin
git push -u origin main配置移动端环境变量
复制模板文件:
cp apps/native/.env.development.local.example apps/native/.env.development.local然后打开 apps/native/.env.development.local 并填入对应的值:
| 变量 | 本地默认值 | 用途 |
|---|---|---|
EXPO_PUBLIC_SERVER_API_URL | http://localhost:3001 | App 调用服务端的基础地址(服务端基于 Hono 跑在 Cloudflare Workers,本地开发监听 3001 端口)。 |
EXPO_PUBLIC_WEB_APP_URL | http://localhost:3000 | 配套 Web 应用的地址 —— 用于认证回调、魔法链接以及共享的网页路由。 |
EXPO_PUBLIC_REVENUECAT_IOS_API_KEY | appl_your_revenuecat_ios_key | RevenueCat iOS SDK 公钥。在 RevenueCat 控制台 → Project → API keys 中获取。iOS 端 IAP / Paywall 必填;如果暂时不需要内购,可以保留占位值。 |
EXPO_PUBLIC_REVENUECAT_ANDROID_API_KEY | goog_your_revenuecat_android_key | RevenueCat Android SDK 公钥,获取方式同上。Android 端 IAP 必填。 |
EXPO_PUBLIC_REVENUECAT_ENTITLEMENT_ID | pro | 在 RevenueCat 中配置的 entitlement 标识,App 通过它判断是否解锁 Pro 功能。 |
EXPO_PUBLIC_ 前缀意味着 Expo 会在构建时把这些值打进 JS bundle —— 切勿在这里放服务端密钥。
同时启动服务端和 Expo
App 会调用 http://localhost:3001,所以服务端必须先跑起来。最方便的方式是在仓库根目录执行合并脚本:
pnpm dev:native+server如果想要独立的日志窗口,也可以分两个终端各自启动:
pnpm dev:server # wrangler dev --port=3001
pnpm dev:native # expo start --clear选择开发目标
选择以下任一目标环境运行 App:
- iOS Simulator(需要 macOS + Xcode)
- Android Emulator(需要 Android Studio)
- 真机上的 Expo Go
如果需要真机原生构建(Expo Go 无法承载的场景,比如自定义原生模块、RevenueCat 等),使用真机专属脚本:
pnpm dev:ios-device # 在已连接的 iOS 真机上构建并运行
pnpm dev:android-device # 在已连接的 Android 真机上构建并运行
pnpm dev:ios-device+server # iOS 真机 + 服务端 并行启动
pnpm dev:android-device+server # Android 真机 + 服务端 并行启动这些脚本封装的是 apps/native/package.json 中的 expo run:ios --device / expo run:android --device。
真机开发需要 ngrok
真机无法直接访问 http://localhost:3001 —— 它和你的 Mac 不在同一个网络环境里。使用 ngrok 把本地服务暴露到公网:
ngrok http 3001复制 ngrok 打印出来的 https://xxxx.ngrok-free.app 地址,然后更新 apps/native/.env.development.local 中的 EXPO_PUBLIC_SERVER_API_URL:
EXPO_PUBLIC_SERVER_API_URL=https://xxxx.ngrok-free.app改完环境变量后,重启 Expo 开发服务器才能生效。
移动端 & 服务端脚本速查
monorepo 根 package.json 中与移动端 / 服务端相关的脚本:
pnpm dev:native—— 仅启动 Expopnpm dev:server—— 仅启动服务端(端口3001)pnpm dev:native+server—— 两者并行(移动端开发推荐)pnpm dev:ios-device/pnpm dev:android-device—— 在真机上构建并安装pnpm dev:ios-device+server/pnpm dev:android-device+server—— 真机构建 + 服务端并行pnpm dev—— 用 turbo 跑起所有 workspace(web + server + native)
配置清单
你已经启动 App+Server,开发业务功能前请依次完成以下步骤:
- 配置 app.json — 将模板标识替换为你自己的应用信息
- Cloudflare — 账号凭据与 D1 配置
- 数据库 — Drizzle ORM + D1 表结构与数据迁移
- 邮件服务 — 配置 Resend,启用注册验证和密码重置 (如果你需要邮件注册、出海推荐使用国外邮件服务)
- 手机号登录 — 启用手机号登录 (国内推荐)
- 认证服务 — Better Auth、Google OAuth、Apple 登录
- 存储服务 — Cloudflare R2 对象存储,管理头像和文件上传
- RevenueCat 内购 — iOS 和 Android 订阅及内购配置
部署上架,必须按照下面的步骤执行: