【问题标题】:iOS simulator crashes when using Google Maps SDK for iOS使用适用于 iOS 的 Google Maps SDK 时 iOS 模拟器崩溃
【发布时间】:2013-05-11 03:35:08
【问题描述】:

这快把我逼疯了……

我使用 Google Maps SDK for iOS 已经有一段时间了(即使是在 App Store 产品中)。 现在,我不能让它在 iOS 模拟器中运行了!不管我尝试运行哪个项目(甚至是 SDK 中的示例代码),它总是会在第一次添加地图时崩溃,例如:

self.view = [GMSMapView mapWithFrame: frame camera: camera];

这是我收到的日志消息:

2013-05-16 10:59:01.047 SDKDemos[939:1303] ADDRESPONSE - ADDING TO MEMORY ONLY: http://dl.google.com/geosdk/latest
2013-05-16 10:59:01.050 SDKDemos[939:1b03] Google Maps SDK for iOS version: 1.2.2.3031
2013-05-16 10:59:01.050 SDKDemos[939:1b03] New version of Google Maps SDK for iOS available: 1.3.0.3430
2013-05-16 10:59:01.111 SDKDemos[939:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'

我最近在这台 Mac 上尝试了一个防病毒软件,所以一个理论是它可能阻止了一些重要的谷歌地图数据的下载。现在,我已经卸载了这个杀毒软件,删除了 Xcode 的 DerivedData 并重置了 iOS 模拟器,但同样令人失望。

我尝试过的所有项目在我的 iPhone 上运行时都运行良好。我还有另一台 Mac,在模拟器上一切正常。很明显,这台机器一定发生了什么事。

有什么建议吗?

更新

最初,我完全专注于第一条警告消息 (ADDRESPONSE - ADDING TO MEMORY ONLY: http://dl.google.com/geosdk/latest),但我现在意识到,此处提到的 URL 的唯一目的是下载具有最新 SDK 版本号的字符串(当前为“1.3.0.3430 ”)。由于 SDK 然后正确地打印了该字符串进一步向下的两行,我发现该行不太可能与崩溃的真正原因有关。 (我已经相应地更改了这个问题的标题。)

【问题讨论】:

  • 这里已经回答了这个问题:stackoverflow.com/questions/12547490/…
  • 不。这个答案不能解决我的问题。请注意,这台机器一定有一些特定的缓存问题,因为我在另一台机器上运行完全相同的源代码而没有遇到这个问题。所以我需要一种方法来清除 Xcode(或 iOS 模拟器)在这台机器上使用的所有缓存等。
  • 当它崩溃时(在调试版本中)你会得到一个调用堆栈吗?
  • 是的,我确实得到了一个调用堆栈。因为我正在旅行,所以我现在还没有拿到它(这是我的 iMac,我遇到了麻烦)。无论如何,模式总是一样的:它在第一个“+mapWithFrame:camera:”方法中崩溃,然后在崩溃之前深入了解大约 10 层内部 Google 方法。最后的错误信息总是在我的问题中显示:*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil你认为我可以在不访问谷歌源代码的情况下从调用堆栈中得出任何结论吗?
  • 方法名称可能会透露一些信息。例如,基于code.google.com/p/gmaps-api-issues/issues/detail?id=4752 的调用堆栈,我猜想问题出在OpenGL 上下文中,因此我想出了一个解决方法。但是,崩溃的方法名称可能没有那么有用。

标签: ios xcode macos ios-simulator google-maps-sdk-ios


【解决方案1】:

很难说这是否真的有资格作为答案...... 无论如何,我想记录下这个结果,以防其他人在未来偶然发现同样的问题:

离开几天后,我今天回来,打开我的 iMac,进行了新的试运行,然后...

问题解决了! 一切都按预期工作!

我在 Xcode 配置中没有更改任何代码或任何内容。 我唯一做的就是再次删除 Xcode 的 DerivedData 并重置模拟器(我上周做了很多次,但当时没有成功)。

我想我的假设一定是正确的,我的机器中一定有一个缓存,但在 Xcode 的 DerivedData 之外,这导致了这个问题。然后我离开了几天,这个缓存就超时了!

即使这听起来有点牵强,我想不出这种奇怪行为的另一个原因。

知道这个缓存的位置真的很有用,这样人们就可以清理它而无需关闭 mac 几天!

【讨论】:

    猜你喜欢
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    相关资源
    最近更新 更多