Expo 开发环境:加速 React Native 迭代

FreeGuideOnline 最新 2026-06-17

Expo 开发环境:加速 React Native 迭代

Expo 是一套围绕 React Native 的开源工具和服务,它彻底简化了移动端开发的环境搭建与工程流程。本教程将带你从零开始搭建一个专业的 Expo 开发环境,并掌握提升迭代速度的核心技巧。

理解 Expo 的优势

在开始配置之前,我们先明确 Expo 能为你带来什么:

  • 零原生依赖配置:无需安装 Xcode 或 Android Studio 即可开始开发,彻底告别环境冲突。
  • 快速刷新:修改代码后,应用会在设备或模拟器上近乎实时地反应变更,无需手动重新编译。
  • 跨设备实时预览:通过 QR 码同时在 iOS 和 Android 实体设备上预览应用。
  • 统一的管理客户端(Expo Go):在开发阶段,可直接在手机上运行一个内置了大量原生 API 的容器应用,无需编译完整的原生二进制包。
  • EAS(Expo Application Services):提供云端构建、提交和更新的完整 CI/CD 管道,让发布流程自动化。

第一步:安装基础工具

你需要电脑上已经存在 Node.js (推荐 LTS 版本) 和 Git。然后,全局安装 Expo 的命令行工具 eas-cli 以及创建项目的工具 create-expo-app,它体验更好且更稳定。

npm install -g create-expo-app eas-cli

你也可以使用 npx 直接运行,无需全局安装:

npx create-expo-app

如果你偏好 Yarn,create-expo-app 同样支持自动检测包管理器。

第二步:创建你的第一个 Expo 项目

使用交互式创建命令即可初始化一个带有 TypeScript 支持的新项目:

npx create-expo-app@latest MyFirstApp --template blank-typescript

该命令会在 MyFirstApp 文件夹下生成所有必要文件,并自动安装依赖。进入项目目录:

cd MyFirstApp

关键文件结构速览:

  • App.tsx:应用的根组件,你的开发起点。
  • app.jsonapp.config.js:应用配置文件,定义名称、图标、权限、Scheme 等。
  • tsconfig.json:TypeScript 配置。
  • package.json:依赖和脚本。

第三步:在设备上启动开发服务器

确保你的手机和电脑处于同一 Wi‑Fi 网络(或通过 USB 连接)。启动服务器:

npx expo start

终端会显示一个 QR 码。在 iOS 上使用相机应用扫描,在 Android 上使用 Expo Go 应用中的“Scan QR code”功能。应用会立刻加载。

常见启动参数:

  • npx expo start --tunnel:当网络环境复杂(如公司防火墙)时,通过隧道建立公网连接。
  • npx expo start --dev-client:当项目已集成了自定义原生代码(如使用了 expo-dev-client)时,必须使用开发客户端启动,而非 Expo Go。
  • npx expo start --web:同步启动 Web 版本预览。

第四步:高效开发工作流

使用 Expo Go 快速迭代

Expo Go 是手机上的免费应用,内置了 Expo SDK 支持的所有 API。当你编写地图、相机、动画等代码时,直接刷新即可看到效果,无需任何原生构建。这是最快的学习和原型开发方式。

当需要原生代码时:迁移到开发客户端

如果你的项目需要 Expo SDK 未包含的原生模块,或你自行编写了原生代码(Java/Kotlin/Swift),就需要放弃 Expo Go,转而使用 expo-dev-client。它提供了可定制的开发版本客户端,且支持类似 Expo Go 的快速刷新。

创建开发客户端构建:

npx expo install expo-dev-client

随后运行 npx expo start --dev-client,并构建一个自定义客户端(见下文 EAS 构建)。开发客户端依然保留 QR 码连接方式,但你的应用会运行在包含了自定义原生代码的客户端中。

使用浏览器调试与现代检查工具

Expo 集成了 React Native 的开发者菜单(摇晃设备或按 Cmd + D / Ctrl + M)。推荐使用 React DevToolsExpo 内置的元素检查器

  • 在浏览器中直接打开 React DevTools:
    npx react-devtools
    
    然后在开发者菜单中选择“Connect to React DevTools”。
  • 如需查看网络请求或使用 Reactotron 等第三方调试器,Expo 也完全兼容。

第五步:使用 EAS 进行云端构建

当需要生成可分发的应用包(如提交到应用商店的 IPA 或 AAB)或为开发客户端创建原生构建时,EAS Build 是官方推荐的服务。

登录并配置

eas login

然后为您的项目配置一次 EAS:

eas build:configure

它会创建一个 eas.json 文件,里面预置了 development(开发客户端)、preview (内部测试) 和 production (商店发布) 三种构建配置文件。

启动构建

构建一个开发客户端(以便在自定义原生环境继续开发):

eas build --profile development --platform ios

构建完成后,你的手机可以下载并安装这个自定义客户端,后续开发即可使用 npx expo start --dev-client 连接。

构建一个内部测试包:

eas build --profile preview --platform all

直接构建生产版本(用于商店提交):

eas build --profile production --platform all

所有构建过程都在 Expo 云端执行,支持高并发且无需本地配置复杂的原生编译环境。

第六步:增量更新与自动化

Expo 的一大杀手锏是 EAS Update,它允许你向已发布的应用程序推送 JavaScript 级别的更新,无需重新经过应用商店审核。

在项目代码中准备好更新后,执行:

eas update --branch main --message "修复了首页加载异常"

所有已安装应用的用户会在重启应用后自动获取最新更改。结合 GitHub Actions 或 EAS Workflows,可实现自动化的 CI/CD 管道。

第七步:环境变量管理

Expo 推荐使用 expo-constants 结合 .env 文件管理敏感信息。使用 expo install expo-constants 后,通过 expoConfig.extra 暴露变量。更现代的方式是使用 @expo/env 插件,它向上兼容且支持 .env.production 等多环境文件。

常见问题速查

  • 电脑与手机无法连接:确认防火墙未拦截端口 19000 / 8081,尝试 --tunnel 模式。
  • Android 上“找不到 Expo Go”:确保已从官方渠道安装最新版 Expo Go,或使用 USB 连接后运行 adb reverse tcp:8081 tcp:8081 再做 npx expo start
  • 某些原生 API 不可用:检查 SDK 版本兼容性。如果所需模块不在 Expo Go 支持的列表中,则需要切换到开发客户端。
  • 构建时间过长:首次构建会较慢,后续构建会利用缓存。可拆分 monorepo 或使用更精简的基础镜像。
  • Metro Bundler 缓存问题:遇到奇怪的构建错误时,执行 npx expo start -c 清除缓存后重启。

继续学习

你的 Expo 开发环境已经准备就绪。接下来你可以深入学习:

  • 导航:集成 React Navigation (官方推荐)。
  • 路由:了解新的文件路由系统(Expo Router),它基于文件系统自动生成深层链接。
  • 性能优化:使用 expo-dev-client 和 Flipper 分析性能。
  • EAS Submit:直接从 CLI 将构建包提交到 App Store 和 Google Play。

借助这套环境,你将能够以 Web 开发的速度完成移动应用的迭代。现在,开始编写你的第一个功能吧。