读懂eas.json:expo-react-native-cicd中dev、prod-apk、prod-aab三大构建Profile配置详解
读懂eas.json:expo-react-native-cicd中dev、prod-apk、prod-aab三大构建Profile配置详解
【免费下载链接】expo-react-native-cicd🚀 Free alternative to Expo EAS builds! Complete CI/CD pipeline for React Native & Expo apps using GitHub Actions. Save $100s monthly with unlimited builds, automated testing, and flexible deployment options.项目地址: https://gitcode.com/gh_mirrors/ex/expo-react-native-cicd
expo-react-native-cicd是一个基于 GitHub Actions 的免费 React Native / Expo CI/CD 构建工具,帮你摆脱 EAS Build 付费套餐,实现不限量构建。而整个流水线的"心脏",就是项目根目录下的eas.json 构建 Profile 配置——dev、prod-apk、prod-aab三种 Profile 分别决定了构建出什么样的产物。本文带你 10 分钟读懂这三份配置,一次配好终身受益。
上图为项目内置示例应用(example-todo-app)的应用图标,它会被打包进 dev、prod-apk、prod-aab 三种构建产物中
eas.json 与构建 Profile 是什么?
如果把 CI/CD 流水线比作一条流水线工厂,eas.json就是生产配方表。EAS CLI 在每次执行eas build时,都会根据--profile参数去eas.json的build字段里找到对应名称的配置块,决定:
- 构建哪个平台、哪种打包格式(APK 还是 AAB)
- 是否是开发调试版本
- 版本号如何自动递增
在 expo-react-native-cicd 的工作流中,每次构建命令都形如eas build --platform android --profile <名称> --local,Profile 名称必须与 eas.json 中的 key 完全一致,否则构建会直接失败。
你可以参考项目提供的完整示例配置:sample-config/sample.eas.json。
dev:开发调试 Profile(developmentClient)
在eas.json中,dev构建对应的通常是developmentProfile:
"development": { "developmentClient": true, "distribution": "internal" }两个关键字段的含义:
| 字段 | 作用 | 通俗理解 |
|---|---|---|
developmentClient: true | 生成开发者客户端,不签名上架 | 只能装在自己的开发机上,支持调试、断点、实时日志 |
distribution: "internal" | 内部分发模式 | 不要求完整的发布签名流程,快速出包 |
适合场景:日常开发自测、团队内部 QA 走查。它构建速度快、体积小,是迭代阶段的主力。在 examples/generalized-workflow.yml 中,对应步骤会把产物保存为app-dev.apk,并以NODE_ENV: development环境变量运行。
prod-apk:生产 APK Profile(直接安装版)
prod-apk对应的是可直接安装到手机的正式安装包:
"production-apk": { "autoIncrement": true, "android": { "buildType": "apk" } }三个要点:
- 🔹
buildType: "apk":输出单个.apk文件,双击即装,适合侧载(sideload)、内部测试、线下分发 - 🔹
autoIncrement: true:每次构建自动递增versionCode,你无需手动改版本号,这是 CI 场景的强烈建议项 - 🔹不带 developmentClient:这是"正式"包,用户行为与商店版一致
工作流中该 Profile 会输出app-prod.apk,见 examples/generalized-workflow.yml。
prod-aab:生产 AAB Profile(商店上架版)
prod-aab对应输出Android App Bundle(.aab)格式,这是 Google Play 上架的强制要求:
"production": { "autoIncrement": true, "android": { "buildType": "app-bundle" } }APK 与 AAB 的核心区别:
| 对比项 | prod-apk(APK) | prod-aab(AAB) |
|---|---|---|
| 文件形式 | 单文件,可直接安装 | 容器格式,不能直接安装 |
| 上架方式 | 侧载、官网下载 | Google Play 商店 |
| 体积优化 | 全量包含所有资源 | 商店按设备拆分,下载更小 |
| 适用场景 | 内测、线下分发 | 正式上架 |
在 examples/generalized-workflow.yml 中,该 Profile 输出app-prod.aab;如果配置了 Play 商店凭据,工作流还会执行eas submit -p android --path ./app-prod.aab自动提交上架。
自适应图标(adaptive icon)素材在 AAB 构建中会被自动处理为不同尺寸的图标资源
三种 Profile 如何被工作流触发?
expo-react-native-cicd 的工作流提供了多种触发方式,构建类型选择如下(参考 examples/generalized-workflow.yml):
- 🚀Push 到 main 分支:自动构建全部产物(dev + prod-apk + prod-aab)
- 🖐手动触发(Run workflow):在 Actions 面板下拉选择
all/dev/prod-apk/prod-aab,按需构建,省时省资源 - 🌿Pull Request:只跑测试检查(TypeScript、ESLint、Prettier),不产出安装包
构建完成后,产物会按"版本号-时间戳"归档到 GitHub Artifacts 或你选定的云存储(Google Drive、Zoho Drive 等),例如app-prod-apk-1.2.3-202608211500.apk。
新手最容易踩的 3 个坑
- Profile 名称对不上:工作流写
--profile production-apk,但 eas.json 里 key 是prod-apk?构建直接报 "profile not found"。名称必须逐字一致。 - 忘记
autoIncrement:CI 环境下如果不用远程版本管理(appVersionSource: "remote"),务必打开自动递增,否则商店提审时会遇到"versionCode 不高于线上版本"的错误。 - 把 dev 包发给用户:developmentClient 包在普通手机上无法正常运行,分发给用户请一定用
prod-apk或prod-aab。
相关文件资源
想动手实践的话,这些文件值得打开看看:
- 完整配置示例:sample-config/sample.eas.json
- 主工作流模板(含三种 Profile 构建命令):examples/generalized-workflow.yml
- GitHub Releases 分发模板:examples/github-release-draft-pr-workflow.yml
- Google Drive 分发模板:examples/zoho-drive-workflow.yml
- 各组合的 400+ 种预生成工作流:examples/
- 示例应用(含完整 app.json 与图标素材):sample-apps/example-todo-app/
- 官方文档说明:docs/README.md
总结
| Profile | 产物 | 一句话定位 |
|---|---|---|
dev | app-dev.apk | 开发自测用,速度快 |
prod-apk | app-prod.apk | 可直接安装的正式包 |
prod-aab | app-prod.aab | Google Play 上架专用 |
理解了eas.json中这三个 Profile 的职责分工,你就掌握了 expo-react-native-cicd 自由组合构建的钥匙:需要哪个包,就触发哪个 Profile,全部免费、不限量。现在就可以打开 examples/generalized-workflow.yml,把它复制到你的项目里跑一次试试 🚀
【免费下载链接】expo-react-native-cicd🚀 Free alternative to Expo EAS builds! Complete CI/CD pipeline for React Native & Expo apps using GitHub Actions. Save $100s monthly with unlimited builds, automated testing, and flexible deployment options.项目地址: https://gitcode.com/gh_mirrors/ex/expo-react-native-cicd
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
