Expo项目预览/生产环境google-services.json配置及EAS构建错误解决
问题解决方案与环境配置指南
一、解决Malformed root json构建错误
该错误直接指向google-services-dev.json文件本身或读取逻辑问题,按以下步骤排查:
- 校验JSON格式
将google-services-dev.json内容粘贴到VS Code等支持JSON语法校验的编辑器中,检查是否存在缺逗号、引号不匹配、括号未闭合等语法错误。 - 确认文件路径
确保google-services-dev.json确实放在项目根目录,路径./google-services-dev.json完全正确(Linux/macOS系统注意区分文件名大小写)。 - 重新下载合规配置文件
从Google Cloud控制台重新生成预览环境的配置文件:- 进入对应Google Cloud项目,找到「API和服务」→「Google服务」
- 添加包名为
a.dev的Android应用,下载生成的配置文件并重命名为google-services-dev.json - 确保文件内
package_name字段与app.config.js中android.package的a.dev完全一致。
二、多环境google-services.json创建与管理
不需要新建Google Play Console项目,同一个Google Cloud项目下即可完成多环境配置:
创建步骤
- 生产环境:保留原有包名
a,下载对应的google-services.json - 预览环境:在同一Google Cloud项目中添加新的Android应用,包名填
a.dev,下载配置文件并重命名为google-services-dev.json
管理方式
- 将两个配置文件放在项目根目录,通过
app.config.js中的APP_VARIANT环境变量自动切换(你当前的代码逻辑是正确的) - 确保EAS构建时变量正确传递,在项目根目录的
eas.json中添加环境配置:{ "build": { "preview": { "env": { "APP_VARIANT": "preview" } }, "production": { "env": { "APP_VARIANT": "production" } } } }
三、Expo项目与Google Play Console配置指导
Expo项目配置
你当前的app.config.js逻辑正确,注意以下细节:
android.googleServicesFile的路径必须是相对项目根的正确路径- 预览和生产环境的
android.package(包名)必须与对应google-services.json中的package_name完全匹配 - Google Maps的API Key需分别在Google Cloud控制台启用「Maps SDK for Android」,并限制对应包名和签名证书(发布构建时需要)
Google Play Console配置
同一个Play Console项目下可创建多个独立应用:
- 进入Play Console,点击「创建应用」,分别创建包名为
a(生产)和a.dev(预览)的应用 - 预览环境的构建包上传到「内部测试」或「封闭测试」轨道,生产环境上传到「生产」轨道
- 无需新建Play Console项目,同一项目支持多个不同包名的应用。
四、额外检查点
- 确保本地EAS CLI和Expo CLI为最新版本:
npm install -g eas-cli expo-cli - 本地构建前清理Expo缓存:
expo r -c - 若使用签名证书,预览和生产环境可共用密钥,也可单独创建,但需在Google Cloud控制台的API密钥限制中添加对应证书指纹。
内容的提问来源于stack exchange,提问作者user42195
相关产品推荐
相关产品推荐

