为什么 Google 地图 iOS SDK 会使我的应用程序崩溃?

问题描述 投票:0回答:3

这是我得到的错误输出

Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)

CoreData: annotation:  Failed to load optimized model at path '/var/containers/Bundle/Application/57E1066F-07A5-4A41-B1AF-2B88F6B8300A//GoogleMaps.bundle/GMSCacheStorage.momd/Storage.omo'
CoreData: annotation:  Failed to load optimized model at path '/var/containers/Bundle/Application/57E1066F-07A5-4A41-B1AF-2B88F6B8300A/.app/GoogleMaps.bundle/GMSCacheStorage.momd/Storage.omo'
CoreData: annotation:  Failed to load optimized model at path '/var/containers/Bundle/Application/57E1066F-07A5-4A41-B1AF-2B88F6B8300A/.app/GoogleMaps.bundle/GMSCacheStorage.momd/Storage.omo'
2018-09-18 11:18:28.144990-0500 [7976:1906621] [framework] CUIThemeStore: No theme registered with id=0
2018-09-18 11:18:28.331857-0500 [7976:1906844] ((null)) was false: Cannot find image polyline_colors_texture_dim
2018-09-18 11:18:28.331887-0500 [7976:1906844] ((null)) was false: Image data can't be NULL.
2018-09-18 11:18:28.331900-0500 [7976:1906844] ((null)) was false: Invalid texture state for routesDimTextureState.

我正在 iPhone X 设备和模拟器上运行 iOS 12 SDK。

在我的应用程序中重现它的方法似乎是构建并运行该应用程序。通常此时地图可以正常工作。然后我停止运行,然后重新运行它。然后,当我尝试加载地图时,我收到此错误并崩溃。如果

我已经使用 cocoapods 在多个版本的 GoogleMaps 上尝试过此操作,包括最新的版本。

我也知道这是 CoreData 注释的一个持续存在的问题,但我相信最后三行导致应用程序崩溃。

此外,我有一个经过验证的 API 密钥,并且启用了 iOS SDK。不过,我仍在使用过渡计费帐户,但不确定这是否相关。

更新: 我下载了 Xcode 9.4,没有这个问题。核心数据注释仍然存在,但没有崩溃。

更新#2: 我找到了解决方法。 我相信这是由 Xcode 10s 新的构建系统引起的。焦点对准 Xcode 窗口后,转到“文件”->“工作区设置...”->“选择旧版构建系统”。

我最终挖掘了程序集并找到了它找不到的文件的路径。我去了那里,图像就在那里。因此,要么 Google 地图包配置不正确,要么这是 Cocoa Pods 的错误,或者不知道是什么。

ios xcode google-maps-sdk-ios
3个回答
4
投票

好的。崩溃的原因是之前的开发者手动安装了GMAPS SDK,并且在切换到cocoapods时没有将其删除。我通过打开应用程序项目内部的 Frameworks 文件夹(而不是 Pods 内部的文件夹)并删除所有谷歌地图内容来修复此问题。现在它可以与新的 Xcode 10 构建系统配合使用。


1
投票

在构建阶段找到的复制捆绑资源可能包含在

GoogleMaps.bundle
标签下列出的文件。我也删除了这个文件


0
投票

斯威夫特5

//In your AppDelegate File / SceneDelegate File 

GMSServices.provideAPIKey(GOOGLE_API_KEY)// This maybe you are using previously
GMSPlacesClient.provideAPIKey(GOOGLE_API_KEY)// This maybe you are using previously
GMSServices.provideAPIKey(GOOGLE_API_KEY) //This is Special Case what exactly do you need to add
© www.soinside.com 2019 - 2024. All rights reserved.