EAS (Expo Application Services)

EAS 是 Expo 的云端服务,负责打包编译、自动上架和 OTA 热更新。

#type / concept #status / growing #resource / react-native #resource / android

[!info] related notes

EAS (Expo Application Services)

一句话定义

EAS 是 Expo 提供的云端流水线,负责把你写好的 React Native 代码打包成独立 App、提交到应用商店、并支持 OTA 热更新。

定位

阶段工具说明
开发预览Expo Go专用预览器,不能上架给用户
打包发布EAS生成独立 .apk / .aab / .ipa

Expo Go 就像一个”浏览器”,专门预览 RN 代码。但你不能把 Expo Go 打包上架给用户下载。当项目需要变成真正的独立 App 时,就需要 EAS。

三个核心模块

1. EAS Build(云端打包编译)

最核心、最常用的功能。

痛点: 传统方式打包 App 需要自己配好 Android SDK / NDK / Java 环境,iOS 还必须有 Mac + Xcode。涉及第三方原生库时经常编译报错。

EAS 的解决方式: 终端敲一行 eas build,Expo 把代码传到云端服务器,由服务器配好环境完成编译,直接给你可安装的安装包。

# Android 打包
eas build --platform android

# iOS 打包
eas build --platform ios

# 同时打两个平台
eas build --platform all

开发自定义客户端(Dev Client): 如果用了 Expo Go 不支持的原生插件(蓝牙、支付 SDK 等),需要用 EAS Build 打包一个包含这些原生代码的专属测试版 App(Development Build)来替代 Expo Go 进行调试。

eas build --profile development --platform android

2. EAS Submit(自动上架)

痛点: 把 App 上传到 Google Play Store 或 Apple App Store 需要填各种表单、传证书、走审核,是繁琐的体力活。

EAS 的解决方式: 打包完成后通过 eas submit 命令,直接将安装包推送到苹果 TestFlight / App Store 或谷歌 Play Console。

# 提交到 Google Play
eas submit --platform android

# 提交到 App Store
eas submit --platform ios

3. EAS Update(热更新 / OTA 更新)

痛点: App 已上线,发现一个文案错误或导致闪退的 JS bug。常规流程需要重新打包、提交商店审核、用户去商店更新,全套至少两三天。

EAS 的解决方式: 只要改的是 JavaScript/TypeScript 代码或图片资源(没动 Java/Objective-C 底层代码),用 eas update 直接把补丁推送到用户手机。用户下次打开 App 时自动下载并应用修复,实现”无感更新”。

eas update --branch production --message "修复闪退问题"

限制: 只能更新 JS 层和静态资源。如果改了原生代码(Java/Kotlin/Swift),必须重新走 EAS Build + Submit 流程。

工作流总览

开发(Expo Go / Dev Client)


eas build          ← 云端打包 → .apk / .ipa


eas submit         ← 推送到应用商店


上线后发现 JS bug


eas update         ← OTA 热更新,用户无感修复


改了原生代码?


重新 eas build → eas submit(完整流程)

配置文件 eas.json

{
  "cli": { "version": ">= 5.0.0" },
  "build": {
    "development": {
      "developmentClient": true,
      "distribution": "internal"
    },
    "preview": {
      "distribution": "internal"
    },
    "production": {}
  },
  "submit": {
    "production": {}
  }
}
Profile用途
developmentDev Client 调试包
preview内测分发(不经过商店)
production正式上架包

何时需要引入 EAS

目前阶段(Expo Go 预览开发):不需要。 本地 npx expo start 就够了。

需要引入的时机:

  1. 引入了 Expo Go 不支持的第三方原生库 → 用 EAS 打包 Dev Client
  2. 项目开发完毕,准备打包给别人测试正式上架商店 → 用 EAS Build + Submit
创建于 2026/4/1 更新于 2026/5/27