Android发布版APK集成Google Places API后Google Map显示空白问题
问题排查解决步骤
- 优先检查ProGuard/R8混淆规则
release构建默认开启代码混淆与裁剪,未配置谷歌服务相关保留规则会导致地图、Places相关类被误裁剪,是release版异常、debug版正常的最常见诱因。在你的混淆规则文件(通常为proguard-rules.pro)中添加以下规则:
# 保留Google Maps相关类 -keep class com.google.android.gms.maps.** { *; } -keep interface com.google.android.gms.maps.** { *; } -keep class com.google.android.gms.location.** { *; } # 保留Google Places相关类 -keep class com.google.android.libraries.places.** { *; } -keep class com.google.api.client.** { *; } # 避免泛型签名被擦除 -keepattributes Signature
- 核对API key权限与配置
首先确认你在Google Cloud控制台中给当前使用的API key同时开启了Maps SDK for Android和Places API两个服务,刚集成Places API但未开启对应服务权限会触发接口拦截。其次检查你项目的build.gradle配置,是否存在debug和release版本使用不同manifest占位符替换API key的逻辑,避免release版实际调用的是未授权的key。最后再核对API key的应用限制配置,确认release版本的包名、SHA1和控制台填写的信息完全一致,无字符输入错误。 - 检查Places SDK依赖完整性
你给出的依赖列表中未包含Places SDK相关依赖,确认是否已经添加正确的Places依赖:
// 新版独立Places SDK(推荐,原有集成到Google Play服务的Places版本已官方废弃) implementation 'com.google.android.libraries.places:places:3.3.0'
同时注意com.google.android.gms:play-services-gcm早已官方废弃,建议后续迁移到Firebase Cloud Messaging避免未知兼容问题。
- 核对release变体的Application ID
确认release构建的Application ID和你在Google Cloud控制台绑定SHA1时填写的包名完全一致,部分项目会给debug变体添加.debug之类的后缀,若仅配置了debug包名的权限,release版就会被服务拦截。 - 查看运行时日志定位问题
将release版安装到设备后,连接电脑执行adb logcat -s GoogleMaps即可查看地图相关的报错日志,通常会明确返回如「API key未授权」「服务未开启」「配额不足」之类的明确错误信息,可以快速定位根因。
内容的提问来源于stack exchange,提问作者Faizan Ahmad
相关产品推荐
相关产品推荐

