Flutter发布版Google Maps SDK无法显示地图及API授权问题求助
Flutter Google Maps集成与后端API密钥冲突的解决办法
问题根源
你现在的矛盾在于同一个API密钥既要给前端Flutter的Android APK用,又要给后端服务器调用,但之前只配置了单一来源的授权规则:
- 只设IP授权时,前端APK的请求来自用户手机的公网IP,不在你服务器的IP白名单里,所以地图加载不出来;
- 只设Android应用授权时,后端服务器的请求没带Android应用的包名和SHA-1信息,直接被Google的授权校验拦下来了。
具体解决步骤
1. 给API密钥同时配置两种授权规则
打开Google Cloud控制台的API密钥管理页面,找到你使用的密钥,在「应用限制」里同时添加两种规则:
- Android应用:填上你的Flutter应用包名,再加上调试和发布环境的SHA-1指纹(发布版的SHA-1要用签名APK的密钥库生成)
- IP地址:把后端服务器的公网IP加进去
这样配置后,这个API密钥就同时认可Android应用和服务器IP的请求了。
2. 确认发布APK的SHA-1没出错
生成发布版SHA-1的命令:
keytool -list -v -keystore 你的密钥库路径.jks -alias 你的密钥别名
把这个SHA-1和包名准确填到Google Cloud的Android授权条目里,别打错字,大小写也得完全匹配。
3. 后端请求的小检查
- 后端调用Google Maps API时,不用管Referer头(错误提示里的
empty referer是正常的,服务器请求不需要这个),只要服务器IP在白名单里就行 - 确认后端用的API密钥和前端是同一个,而且这个密钥已经开启了需要的API服务(比如你后端用的是Geocoding API,就得在控制台启用它)
4. 最后核对Flutter配置
构建APK前,检查android/app/src/main/AndroidManifest.xml里的API密钥配置是否正确:
<meta-data android:name="com.google.android.geo.API_KEY" android:value="你的API密钥"/>
另外,Google Cloud的授权规则更新后可能要等几分钟才生效,改完别着急测试,等个两三分钟再试。
内容的提问来源于stack exchange,提问作者Fedy Belaid
相关产品推荐
相关产品推荐

