React Native Expo debug构建MapView显示空白谷歌地图问题
问题根因
这是Expo managed workflow下使用EAS构建时,签名证书和本地Expo Go不一致导致的典型鉴权失败问题:
- Expo Go中地图功能正常,是因为Expo Go客户端本身使用公开的通用debug签名,和你预先配置的SHA-1指纹匹配,Maps SDK鉴权通过可以正常加载瓦片。
- EAS构建预览版(包括development build、内部测试版)时,默认会为当前项目自动生成独立的debug签名证书,不会复用Expo Go的通用debug keystore。你之前配置的SHA-1指纹和实际安装包的签名不匹配,Google Maps服务会直接拒绝API请求,表现为地图区域空白、仅显示底部Google Logo。填入任意字符串不崩溃,是因为SDK检测到key存在就不会触发初始化崩溃流程,但鉴权失败自然无法加载地图内容。
- 32位Windows设备无需安装Android Studio也能获取正确的签名指纹,不需要手动生成keystore。
分步解决方案
获取EAS构建实际使用的签名证书SHA-1指纹
在项目根目录打开终端,执行命令:eas credentials -p android
根据交互提示选择你当前使用的预览构建配置,找到对应使用的keystore条目,选择查看证书详情,即可直接获取到正确的SHA-1指纹,全程依赖EAS CLI完成,不需要本地安装安卓开发相关工具。注意:如果你选择的是EAS内部分发构建类型,即使配置为debug模式,部分场景下会默认使用你上传的生产签名证书,此时需要提取对应生产证书的SHA-1,不要直接套用通用debug指纹。
更新Google Cloud API key配置
回到Google Cloud控制台的Maps SDK for Android密钥配置页:- 将上一步拿到的实际签名SHA-1指纹添加到应用限制列表中
- 确认填写的包名和项目
app.json中android.package字段值完全一致,无多余空格、大小写错误 - 确认Maps SDK for Android已正常启用,账号配额没有超限
- 配置修改后等待3-5分钟让Google侧同步生效,不要改完立刻测试。
校验项目配置格式
打开app.json确认Google Maps API key的配置位置正确,错误的字段层级会导致配置不生效,正确结构参考:{ "expo": { "android": { "config": { "googleMaps": { "apiKey": "你的Android端Google Maps API密钥" } } } } }不要将Android端的key写到iOS配置段下,也不要拼错字段名。
重新构建预览版
执行EAS构建命令生成新的安装包,之前构建的旧包不会同步最新配置,必须重新打包安装后再测试。
额外排查项
- 若完成以上步骤后地图仍空白,检查项目网络权限配置,确认已授予应用互联网访问权限(managed workflow默认会添加该权限,如果你手动修改过权限列表需要核对)
- 检查API key的应用限制规则,不要误选仅允许iOS应用调用、或绑定了不属于当前项目的包名
- 若你在API key上配置了API限制,确认已勾选Maps SDK for Android的调用权限,不要漏选。
内容的提问来源于stack exchange,提问作者G-T
相关产品推荐
相关产品推荐

