iOS问题:iPhone端Google Maps地图无法加载,真机调试正常
我之前也遇到过几乎一模一样的问题,先给你拆解下:那条CoreData日志绝对是和地图加载失败直接相关的——Google Maps依赖这个StorageWithTileProto.omo优化模型来处理缓存存储,找不到它地图自然没法正常初始化加载。至于为什么Xcode运行时没问题,打包后不行,大概率是打包过程中资源引用或者配置出了岔子,给你几个针对性的解决方案:
检查GoogleMaps.bundle的资源引用
打开Xcode,进入你的项目Target,切换到Build Phases标签页,找到Copy Bundle Resources列表,确认GoogleMaps.bundle在里面。如果没有,点击+按钮,从Pods目录(或者你存放Google Maps SDK的位置)找到GoogleMaps.bundle添加进去。这个步骤很关键,因为打包时如果没把这个bundle复制到App包内,就会出现找不到模型文件的情况。验证Google Maps API Key的配置
你在Xcode调试时用的是调试证书/Provisioning Profile,而打包发布用的是发布版本的配置,很可能你的Google Cloud API Key只限制了调试版本的Bundle ID。去Google Cloud控制台找到你的API Key,检查应用限制里的iOS Bundle ID是否包含了发布版本的Bundle ID(注意大小写和拼写完全一致),如果没加的话添加上去,然后重新打包测试。清理缓存并重新构建
有时候Xcode的缓存或者设备上的旧App缓存会导致奇怪的问题:- 在Xcode里点击
Product->Clean Build Folder(快捷键Shift+Command+K); - 删除iPhone上已安装的目标App;
- 重新构建打包,安装到设备上测试。
- 在Xcode里点击
检查打包时的资源压缩配置
有些时候,Xcode的资源压缩设置会损坏GoogleMaps.bundle里的文件。进入Target的Build Settings,搜索Compress PNG Files,确保这个选项设置为NO;另外检查Remove Text Metadata From PNG Files也设置为NO,避免打包时修改bundle内的资源文件。更新或回退Google Maps SDK版本
如果上面的方法都没用,可能是你当前使用的Google Maps SDK版本和Xcode打包工具存在兼容性问题。试试更新到最新的稳定版本,或者回退到之前能正常工作的版本,重新安装依赖后再打包测试。
内容的提问来源于stack exchange,提问作者Alberto Mier

