移动应用
用 React Native / Expo 构建并发布跨平台移动应用,从规划到应用商店。
规划与初始化
定义范围、选择 Expo 或裸工作流,并搭建项目骨架。
为什么
移动端规划锁定了后续难以变更的约束:导航结构、状态形状、离线行为。Expo 与裸工作流是'1 周 vs 3 个月'的决策——Expo 替你处理原生模块和 OTA 更新;裸工作流给你完整原生控制,但你要自己维护 Gradle/Xcode 构建。
何时使用
在写任何界面代码之前。聚焦的 MVP 通常 1-2 周。现在就决定仅 iOS 还是双平台——它影响每个依赖选择。
如何做
示例
常见问题
- ⚠过早选裸工作流——你花数周在 Gradle/Xcode 而非功能上
- ⚠无离线规划——弱网下应用白屏,用户认为它坏了
- ⚠深链和导航结构临时决定,加界面时被迫重构
最佳实践
- ✓从 Expo 托管开始——仅在需要 Expo 不支持的原生模块时才 eject
- ✓用 expo-router 提前把导航设计成树;文件路径即路由
- ✓服务端状态与本地状态分开——TanStack Query + Zustand,而非一个巨型 Redux store
开发与测试
构建界面,配备快速刷新、真机测试和每次提交的 CI。
为什么
移动端 bug 比网页更难复现——设备碎片、系统版本、网络条件放大边界情况。第一周就启用快速刷新和真机测试,能发现模拟器漏掉的布局和手势问题。没有 CI,原生依赖的回归会悄悄破坏构建。
何时使用
初始化后。先做风险最高的界面(认证或核心流程)以尽早验证导航 + 数据层。
如何做
示例
常见问题
- ⚠只在模拟器测试——手势和键盘 bug 只在真机出现
- ⚠iOS 开发时忽视 Android——提交时小屏 Android 布局崩坏
- ⚠上线后才加崩溃上报——第一台坏设备就是 1 星评价
最佳实践
- ✓第一天就在真机测试——用手机扫 Expo QR,而非只看模拟器
- ✓CI 里 iOS 和 Android 都跑 Maestro E2E——平台 bug 是非对称的
- ✓首次 TestFlight 前就装 Sentry——你需要在评审遇到崩溃前就有数据
部署与 OTA 更新
用 EAS 构建生产包,并通过 OTA 推送 JS 更新而无需商店审核。
为什么
EAS Build 在云端生成签名包,无需与 Xcode 签名搏斗。OTA 更新(expo-updates)让你几分钟推送纯 JS 修复,而非等 1-7 天商店审核——对崩溃修复至关重要,但只有结构正确才安全。
何时使用
核心流程在真机测试通过后。首次 TestFlight 前就建好 EAS 和 expo-updates,这样需要时更新通道已就绪。
如何做
示例
常见问题
- ⚠OTA 更新用了新原生 API——旧包设备崩溃
- ⚠无 staging 通道——每次更新直达所有用户,无法发现回归
- ⚠崩溃修复等商店审核,而本可用 OTA 即时推送
最佳实践
- ✓只 OTA 推送纯 JS 变更;任何原生变更都需新包 + 商店审核
- ✓始终先更新 staging 通道,等 24 小时再提升到 production
- ✓把 expo-updates rollback 写进事件手册——它是最快的回滚
商店提交与增长
上架 App Store 和 Google Play,配备素材、ASO 和基于评价的迭代。
为什么
商店素材质量直接驱动安装转化——截图和描述前三行决定搜索用户是否安装。ASO(应用商店优化)是移动端的 SEO:做一次,终身复利。评价回复是你的公开支持渠道。
何时使用
首个生产包构建并测试通过后。别赶素材——一套好截图能让安装转化翻倍。
如何做
示例
常见问题
- ⚠营销风截图掩盖真实 UI——用户不信任,不安装
- ⚠标题堆砌关键词——商店惩罚,排名下降
- ⚠忽视 1 星评价——每条未回复的差评约损失 10 次安装
最佳实践
- ✓首图展示核心操作,而非启动页——它是安装转化的第一驱动
- ✓24 小时内回复每条评价;礼貌回复常在更新后把 1 星变 4 星
- ✓持续跑 Play Console 图标/截图 A/B 测试——小胜在应用生命周期中复利