Expo 应用服务(EAS) CLI 完全指南:从入门到精通
前言
在 React Native 和 Expo 开发中,构建、发布和更新应用一直是开发者面临的挑战。随着 Expo Application Services (EAS) 的推出,这些流程变得更加简单和自动化。本文将为您提供 EAS CLI 的全面指南,帮助您高效管理 React Native 应用的整个生命周期。
目录
- EAS 简介
- 安装与设置
- EAS CLI 命令详解
- eas.json 配置文件全解析
- 最佳实践与常见场景
- 常见问题解答
- 总结与进阶资源
1. EAS 简介
EAS (Expo Application Services) 是 Expo 提供的一套云服务和工具,用于构建、提交和更新 React Native 应用。它解决了传统 React Native 开发中的许多痛点:
- 云端构建:无需在本地配置复杂的构建环境
- 自动化发布:简化应用商店提交流程
- OTA 更新:实现应用内容的快速更新,无需重新提交商店审核
- 证书管理:无需手动管理复杂的签名证书
作为 Expo 生态系统的一部分,EAS 与 Expo Go 和 Expo SDK 完美配合,但同时也支持任何 React Native 项目,包括"裸"React Native 应用。
2. 安装与设置
安装 EAS CLI
bash
npm install -g eas-cli
登录账户
bash
eas login
项目初始化
在现有的 Expo 或 React Native 项目中初始化 EAS:
bash
eas init
这将创建初始的 eas.json
文件,该文件是 EAS 配置的核心。
3. EAS CLI 命令详解
账户管理命令
命令 | 描述 |
---|---|
eas login |
登录到 Expo 账户 |
eas whoami |
显示当前登录的用户信息 |
eas logout |
从 EAS CLI 注销 |
构建相关命令
命令 | 描述 |
---|---|
eas build |
构建应用程序 |
eas build -p android |
构建 Android 应用 |
eas build -p ios |
构建 iOS 应用 |
eas build -p all |
同时构建 Android 和 iOS 应用 |
eas build --profile <profile-name> |
使用特定配置文件构建应用 |
eas build:configure |
配置项目以使用 EAS Build |
eas build:list |
列出您的构建记录 |
eas build:status |
查看特定构建的状态 |
eas build:view |
在浏览器中打开构建页面 |
开发客户端管理
命令 | 描述 |
---|---|
eas device:create |
注册设备用于内部分发 |
eas device:list |
列出已注册的设备 |
eas build:resign |
对现有的 iOS 应用二进制文件重新签名 |
应用商店提交命令
命令 | 描述 |
---|---|
eas submit |
提交应用到应用商店 |
eas submit -p android |
提交到 Google Play |
eas submit -p ios |
提交到 App Store |
eas submit --profile <profile-name> |
使用特定配置文件提交应用 |
更新管理命令
命令 | 描述 |
---|---|
eas update |
创建和发布更新 |
eas update --branch <branch> |
将更新发布到特定分支 |
eas update --message "更新说明" |
为更新添加描述消息 |
eas update:list |
列出您的更新 |
eas update:view |
查看特定更新的详细信息 |
eas update:rollback |
回滚到之前的更新版本 |
分支管理命令
命令 | 描述 |
---|---|
eas branch:create |
创建新的更新分支 |
eas branch:list |
列出项目中的所有分支 |
eas branch:delete |
删除一个分支 |
环境与配置管理
命令 | 描述 |
---|---|
eas secret:create |
创建新的环境密钥 |
eas secret:list |
列出项目的所有密钥 |
eas secret:delete |
删除一个密钥 |
eas diagnostics |
运行诊断检查,验证项目设置 |
4. eas.json 配置文件全解析
eas.json
是 EAS 的核心配置文件,定义了应用构建、提交和更新的各种设置。以下是一个典型配置及解析:
json
{
"cli": {
"version": ">= 15.0.15",
"appVersionSource": "remote"
},
"build": {
"development": {
"developmentClient": true,
"distribution": "internal"
},
"preview": {
"distribution": "internal"
},
"production": {
"autoIncrement": true
}
},
"submit": {
"production": {}
}
}
cli 部分
json
"cli": {
"version": ">= 15.0.15",
"appVersionSource": "remote"
}
- version: 指定项目需要的最小 EAS CLI 版本,确保团队成员使用兼容的工具版本
- appVersionSource : 定义应用版本号的来源
remote
: 使用 EAS 服务器上记录的最新版本local
: 使用 app.json/app.config.js 中定义的版本
build 部分
json
"build": {
"development": {
"developmentClient": true,
"distribution": "internal"
},
"preview": {
"distribution": "internal"
},
"production": {
"autoIncrement": true
}
}
build 部分包含不同构建配置文件(profiles)的设置:
development 配置
- developmentClient :
true
- 构建开发客户端版本,支持实机调试 - distribution :
internal
- 内部分发,仅安装到注册设备上
这个配置适合开发阶段,允许团队成员在真实设备上进行开发和测试。
preview 配置
- distribution :
internal
- 同样是内部分发 - 不包含开发客户端功能,更接近最终产品
这个配置适合内部测试或演示,功能完整但不发布到商店。
production 配置
- autoIncrement :
true
- 每次构建时自动增加版本号 - 默认
distribution
为store
,适合提交到应用商店
submit 部分
json
"submit": {
"production": {}
}
这部分配置应用提交到应用商店的设置。当前是空对象,使用默认设置,但可以根据需要添加:
json
"submit": {
"production": {
"ios": {
"appleId": "[email protected]",
"ascAppId": "1234567890",
"appleTeamId": "AB123456"
},
"android": {
"track": "internal",
"serviceAccountKeyPath": "./path-to-key.json"
}
}
}
5. 最佳实践与常见场景
场景一:开发流程
-
创建开发构建:
basheas build --profile development --platform android
-
在真实设备上测试: 使用开发客户端,连接到本地开发服务器
-
发布预览版本:
basheas build --profile preview --platform ios
-
生产发布:
basheas build --profile production --platform all eas submit --platform all
场景二:快速迭代使用 EAS Update
-
发布 OTA 更新:
basheas update --branch production --message "修复报表页面崩溃问题"
-
紧急回滚:
basheas update:rollback --branch production
场景三:自定义构建配置
json
"build": {
"custom": {
"android": {
"buildType": "apk",
"gradleCommand": ":app:assembleRelease"
},
"env": {
"API_URL": "https://api.staging.myapp.com",
"FEATURE_FLAGS": "beta,dark-mode"
},
"cache": {
"key": "yarn-{{ hashFile('yarn.lock') }}"
}
}
}
使用自定义配置构建:
bash
eas build --profile custom --platform android
6. 常见问题解答
Q: EAS Build 和传统的 React Native 构建方式有什么区别?
A: EAS Build 将构建过程转移到云端,无需在本地配置复杂的构建环境。它自动处理证书管理,支持多种分发方式,并与 Expo 更新系统无缝集成。
Q: 我的项目不是用 Expo 创建的,可以使用 EAS 吗?
A: 可以!EAS 支持任何 React Native 项目,包括"裸"React Native 应用。只需安装必要的 Expo 包并初始化配置即可。
Q: EAS 构建需要多长时间?
A: 构建时间取决于项目复杂度,通常在 5-15 分钟之间。首次构建会更长,因为需要设置初始缓存。
Q: 我可以在 EAS 中使用自定义原生代码吗?
A: 完全可以。EAS 支持完整的 React Native 功能集,包括原生模块和自定义代码。
7. 总结与进阶资源
EAS CLI 为 React Native 开发者提供了强大的工具链,简化了从开发到发布的整个流程。通过合理配置 eas.json
,您可以创建符合各种需求的构建流程,实现应用的快速迭代。
进阶资源
如果你觉得这篇文章有帮助,欢迎点赞、收藏和分享!有任何问题也可以在评论区留言,我会尽快回复。
#React Native# #Expo# #移动开发# #前端#