Expo SDK46升级后EAS Build忽略本地versionCode等配置问题
一、VersionCode 不生效问题排查
确认app.config.js版本配置格式
确保在expo.android字段下明确指定versionCode,同时version对应语义化版本,示例代码:export default { expo: { version: "1.1.1", android: { versionCode: 26, // 其他Android配置 } } };若使用环境变量管理版本,需同步在EAS控制台的项目环境变量中配置,避免本地.env变量未被构建环境读取。
检查eas.json的配置优先级
eas.json中各构建profile如果硬编码了version或versionCode,会直接覆盖app.config.js的设置。比如以下配置会导致本地versionCode 26被覆盖为25:{ "build": { "production": { "android": { "versionCode": 25 } } } }排查所有构建profile,移除硬编码的版本字段。
正确配置本地版本源
在eas.json对应构建profile中设置"appVersionSource": "local",同时不要在该profile下设置version或versionCode,示例:{ "build": { "production": { "appVersionSource": "local", "android": { // 不设置versionCode } } } }构建时添加
--clear-cache参数清除缓存:eas build -p android --profile production --clear-cache
二、图标、启动图、背景色等配置不生效问题
校验配置路径与格式
确保图标、启动图的路径是相对于项目根目录的正确路径,且格式符合Expo要求(比如图标尺寸达标),示例:export default { expo: { icon: "./assets/icon.png", splash: { image: "./assets/splash.png", backgroundColor: "#ffffff" } } };同时确认对应文件存在于指定路径。
排查eas.json的配置覆盖
检查eas.json中是否存在覆盖app.config.js的splash、icon等配置,若有则移除该部分配置,让本地app.config.js生效。清除缓存
本地执行expo r -c清除Expo本地缓存;构建时添加--clear-cache参数,确保EAS使用最新的配置文件。
三、额外排查动作
- 执行
expo config命令,查看解析后的完整配置,确认versionCode、图标等字段是否正确输出 - 查看EAS控制台的构建日志,搜索"versionCode"、"icon"等关键词,排查是否有配置被忽略或覆盖的提示信息
- 确认Expo CLI版本匹配SDK46,建议使用6.0.0及以上版本,执行
expo --version查看当前版本
内容的提问来源于stack exchange,提问作者sphrases

