Flutter打包appbundle后Google Maps显示空白是什么原因?
问题成因说明
核心原因:Google Play 应用签名的重签逻辑
- 你本地执行
flutter build apk --release生成的APK,是直接用你本地存储的release签名密钥打包的,和你提前录入谷歌云控制台的release SHA-1指纹匹配,所以Google Maps服务校验通过,地图正常加载。 - 当你生成AAB包上传到Google Play时,默认启用Google Play 应用签名服务:Google Play会使用平台侧托管的独立签名密钥,对AAB拆分生成的分发APK进行重签,签名对应的SHA-1和你本地的release密钥SHA-1完全不同。你之前没有将这个Google Play托管签名的SHA-1录入谷歌云控制台的API限制列表,Google Maps服务校验签名不匹配,直接拒绝返回地图资源,最终表现为空白屏幕。
- 你把API访问限制改为无限制后,Google Maps服务不再校验请求对应的应用包名和SHA-1指纹,只要API密钥合法就允许调用,所以功能恢复正常。
规范修复方案
- 进入Google Play控制台对应应用的「应用完整性」页面,复制应用签名密钥证书分类下的SHA-1值
- 将该SHA-1和你的应用包名,一同添加到谷歌云控制台对应Google Maps API密钥的安卓应用限制列表中即可,无需保留无限制的不安全配置。
内容的提问来源于stack exchange,提问作者Emmanuel
相关产品推荐
相关产品推荐

