EasyStarter logoEasyStarter

移动端快速开始

本地跑起 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

安装依赖

执行以下命令安装项目所需的所有依赖包:

pnpm install

配置移动端环境变量

复制模板文件:

cp apps/native/.env.development.local.example apps/native/.env.development.local

然后打开 apps/native/.env.development.local 并填入对应的值:

变量本地默认值用途
EXPO_PUBLIC_SERVER_API_URLhttp://localhost:3001App 调用服务端的基础地址(服务端基于 Hono 跑在 Cloudflare Workers,本地开发监听 3001 端口)。
EXPO_PUBLIC_WEB_APP_URLhttp://localhost:3000配套 Web 应用的地址 —— 用于认证回调、魔法链接以及共享的网页路由。
EXPO_PUBLIC_REVENUECAT_IOS_API_KEYappl_your_revenuecat_ios_keyRevenueCat iOS SDK 公钥。在 RevenueCat 控制台 → Project → API keys 中获取。iOS 端 IAP / Paywall 必填;如果暂时不需要内购,可以保留占位值。
EXPO_PUBLIC_REVENUECAT_ANDROID_API_KEYgoog_your_revenuecat_android_keyRevenueCat Android SDK 公钥,获取方式同上。Android 端 IAP 必填。
EXPO_PUBLIC_REVENUECAT_ENTITLEMENT_IDpro在 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 —— 仅启动 Expo
  • pnpm 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,开发业务功能前请依次完成以下步骤:

  1. 配置 app.json — 将模板标识替换为你自己的应用信息
  2. Cloudflare — 账号凭据与 D1 配置
  3. 数据库 — Drizzle ORM + D1 表结构与数据迁移
  4. 邮件服务 — 配置 Resend,启用注册验证和密码重置 (如果你需要邮件注册、出海推荐使用国外邮件服务)
  5. 手机号登录 — 启用手机号登录 (国内推荐)
  6. 认证服务 — Better Auth、Google OAuth、Apple 登录
  7. 存储服务 — Cloudflare R2 对象存储,管理头像和文件上传
  8. RevenueCat 内购 — iOS 和 Android 订阅及内购配置

部署上架,必须按照下面的步骤执行:

  1. 部署 Server — 将 Hono 服务端部署到 Cloudflare Workers
  2. 上架 App — 使用 EAS 构建并提交到 App Store 和 Google Play

On this page