当前位置: 首页 > news >正文

读懂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 配置——devprod-apkprod-aab三种 Profile 分别决定了构建出什么样的产物。本文带你 10 分钟读懂这三份配置,一次配好终身受益。

上图为项目内置示例应用(example-todo-app)的应用图标,它会被打包进 dev、prod-apk、prod-aab 三种构建产物中

eas.json 与构建 Profile 是什么?

如果把 CI/CD 流水线比作一条流水线工厂,eas.json就是生产配方表。EAS CLI 在每次执行eas build时,都会根据--profile参数去eas.jsonbuild字段里找到对应名称的配置块,决定:

  • 构建哪个平台、哪种打包格式(APK 还是 AAB)
  • 是否是开发调试版本
  • 版本号如何自动递增

在 expo-react-native-cicd 的工作流中,每次构建命令都形如eas build --platform android --profile <名称> --localProfile 名称必须与 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 个坑

  1. Profile 名称对不上:工作流写--profile production-apk,但 eas.json 里 key 是prod-apk?构建直接报 "profile not found"。名称必须逐字一致。
  2. 忘记autoIncrement:CI 环境下如果不用远程版本管理(appVersionSource: "remote"),务必打开自动递增,否则商店提审时会遇到"versionCode 不高于线上版本"的错误。
  3. 把 dev 包发给用户:developmentClient 包在普通手机上无法正常运行,分发给用户请一定用prod-apkprod-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产物一句话定位
devapp-dev.apk开发自测用,速度快
prod-apkapp-prod.apk可直接安装的正式包
prod-aabapp-prod.aabGoogle 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),仅供参考

http://www.cnnetsun.cn/news/4159843.html

相关文章:

  • PyULog:8条命令解析PX4 ULog日志,导出CSV、KML与SQLite
  • RDMA数据传输操作:Send/Recv与Read/Write全解析
  • AnythingLLM 教程:10 分钟搭建一个本地私有知识库问答应用
  • Element Tiptap富文本编辑器:Vue3项目5分钟接入带菜单的WYSIWYG编辑器
  • SPA 刷新 404 难题终结者:boot-react SinglePageAppConfig pushState 资源解析器深度剖析
  • 我的价值观
  • 如何使用 draw.io 桌面版:离线绘图与批量导出完整指南
  • CEdev 图形编程完全指南:graphx 库调色板、精灵动画与 Tilemap 实战教程
  • iOS跨平台位置模拟实战:基于WebKit调试协议实现GeoPort方案
  • Weasis:内建 2D/3D 影像分析的开源 DICOM 查看器
  • res-downloader完全教程:免费的跨平台资源嗅探器,一键下载视频音乐图片
  • PhoneProfilesPlus新手必学的8个实用场景:会议自动静音、通勤一键飞行模式
  • 让Claude Code、Codex与Gemini协同工作:Agent Relay Harnesses完整指南
  • 训练UniDetector前必看的20+个关键超参数:完整配置项逐条解读
  • 快速上手solid-dnd:10分钟从零搭建你的第一个拖拽应用,新手友好教程
  • 如何系统掌握高级数据结构?AlgorithmsAndDataStructuresInAction官方代码库入门指南
  • Vue-preview 图片预览:新手安装与上手完整指南
  • ShawzinBot:免费把 MIDI 变成游戏按键
  • 如何重置 Navicat 试用期:3 条命令跑通 navicat-key 注册表清理工具
  • ODC 生产环境部署最佳实践:MetaDB、Docker 与高可用架构配置全解析
  • 让联邦查询提速10倍:aws-athena-query-federation谓词下推、分区裁剪与TopN优化实战
  • MobilityDB高精度建模:tpose四元数姿态类型如何描述自动驾驶与机器人运动
  • TeslaLogger新功能MCP Server详解:用自然语言向AI查询你的特斯拉数据
  • B站视频下载完全指南:5 分钟跑通 BilibiliDown,把喜欢的内容存进本地
  • Rollbar.js Node.js 接入实战:Express 服务端错误追踪的 5 步配置法
  • paperetl PubMed 高级过滤教程:用 MeSH 编码与关键词精准筛选科研文献
  • 读懂 Apktool ApkInfo:APK 元数据的存储、加载与回写
  • MusicPlayer2:免费开源的本地音乐播放器,10分钟讲透歌词、封面与音效
  • hubot-rocketchat架构深潜:hubot-meteorchat驱动模型与@rocket.chat/sdk响应式订阅完整指南
  • 一文掌握grafar.map:响应式依赖追踪与自动拓扑推断完全教程