使用google_maps_flutter的Flutter应用iOS端点击地图模块闪退求助
问题排查方案
- 检查iOS定位权限配置
你使用了location插件获取定位,需要在iOS项目的ios/Runner/Info.plist文件中添加以下权限描述,未配置权限时iOS系统会直接杀死触发权限请求的应用,不会输出堆栈日志:<key>NSLocationWhenInUseUsageDescription</key> <string>需要使用定位权限来展示您周边的水域信息</string> <key>NSLocationAlwaysAndWhenInUseUsageDescription</key> <string>需要使用定位权限来展示您周边的水域信息</string> - 检查iOS最低支持版本配置
google_maps_flutter2.0及以上版本要求iOS最低支持版本为11.0,需要确认两处配置:- 打开
ios/Podfile,确认首行platform :ios, '11.0'的注释已经移除,版本号不低于11.0 - 用Xcode打开iOS项目,确认Runner目标的「Deployment Target」设置为11.0或更高版本
- 打开
- 检查Google Maps API密钥配置
- 确认Google Cloud后台的iOS类型API密钥已经开通「Google Maps SDK for iOS」权限
- 确认密钥绑定的Bundle ID与你项目的iOS Bundle ID完全一致,大小写、符号都不能有差异
- 补充空值防护逻辑
你的代码中直接使用locationAsync.data.latitude取值,未做空判断。iOS端定位权限未开启、定位失败等场景下locationAsync.data可能为null,直接取值会触发空指针闪退,建议增加判空逻辑,为空时返回默认坐标或者错误提示。 - 缩小问题范围定位诱因
可以先注释掉GoogleMap组件中polygons、polylines的渲染逻辑,仅保留基础地图渲染,如果此时不再闪退,说明是大量点位/图形渲染导致的内存超限闪退,可以做分页加载、可视区域渲染优化。 - 获取完整闪退日志
直接用Xcode打开ios/Runner.xcworkspace运行项目,Xcode控制台会输出完整的iOS原生闪退日志,可以精准定位闪退根因,Android Studio的「Lost connection to Device」提示仅能说明应用崩溃,无法展示具体错误。
内容的提问来源于stack exchange,提问作者Siro Duschletta
相关产品推荐
相关产品推荐

