【问题标题】:HERE SDK Lite iOS crash after entering background during initializationHERE SDK Lite iOS 在初始化期间进入后台后崩溃
【发布时间】:2021-10-07 12:58:03
【问题描述】:

我们最近检测到似乎与 HERE SDK Lite for iOS(版本:4.7.6)有关的应用崩溃。基本上,该应用程序似乎在SDKNativeEngine 初始化期间进入了后台。我在 API 参考中没有找到任何信息表明应该执行此活动以防止应用程序进入后台,所以我的猜测是它可能是一个未处理的边缘情况。你知道这个问题是否有任何具体的解决方法吗?

Crashed: NSOperationQueue 0x10cf229f0 (QOS: UNSPECIFIED)
0  heresdk                        0x52a444 (Missing)
1  heresdk                        0x5238e8 (Missing)
2  heresdk                        0x522d14 (Missing)
3  heresdk                        0xff4e0 (Missing)
4  heresdk                        0x142be0 (Missing)
5  heresdk                        0x13fc0c (Missing)
6  heresdk                        0x13f8cc (Missing)
7  heresdk                        0xa2dcc (Missing)
8  heresdk                        0x145a4 (Missing)
9  <REDACTED>                     0xb8b074 static SDKNativeEngine.main() + 4380340340
10 <REDACTED>                     0xb8ae50 HereService.init() + 4380339792
11 <REDACTED>                     0xb9204c static Module.warmup() + 4380368972
12 <REDACTED>                     0xb92070 @objc static Module.warmup() + 4380369008

这基本上是导致问题的一段代码:

let options = SDKOptions(accessKeyId: accessKeyId,
                                     accessKeySecret:accessKeySecret)

var nativeEngine: SDKNativeEngine
do {
   try nativeEngine = SDKNativeEngine(options: options)
} catch {
   assertionFailure("Failed to initialize SDKNativeEngine. Cause: \(error)")
   return nil
}
SDKNativeEngine.sharedInstance = nativeEngine

更新 - 2021 年 10 月 24 日

我应用了建议的solution,但仍然遇到非常相似的应用程序崩溃,这次涉及SDKNativeEngine.initalize() 函数。该功能基本上是这样做的:

static func initalize() throws {
   try SDKInitializer.initialize(options: sdkOptions)
}

我将在此处附上一个示例堆栈跟踪:

Crashed: NSOperationQueue 0x159019c80 (QOS: UNSPECIFIED)
0  heresdk                        0x52a444 (Missing)
1  heresdk                        0x5238e8 (Missing)
2  heresdk                        0x522d14 (Missing)
3  heresdk                        0xff4e0 (Missing)
4  heresdk                        0x142be0 (Missing)
5  heresdk                        0x13fc0c (Missing)
6  heresdk                        0x13f8cc (Missing)
7  heresdk                        0xa2dcc (Missing)
8  heresdk                        0x145a4 (Missing)
9  heresdk                        0x144cc (Missing)
10 heresdk                        0x8da70 (Missing)
11 heresdk                        0x8c740 (Missing)
12 <REDACTED>                     0xbb288c static SDKNativeEngine.initalize() + 4316014732
13 <REDACTED>                     0xbb7cb4 static Module.warmup() + 4316036276

【问题讨论】:

  • 它似乎在您的 SBTAppDelegate didFînishLaunchingWithOptions 方法上崩溃。你在那里做什么 init ?您的问题中没有太多信息。
  • 很遗憾,我没有太多要补充的信息。在应用程序中:didFinishLaunchingWithOptions 我正在执行一些其他异步操作来初始化应用程序,但堆栈跟踪似乎与 heresdk 相关。没有符号的 SDK 很难提供额外的信息。
  • 从我在Here Sdk 中看到的,map init 需要一个框架:如果你的init 是异步的,那么此时可能没有定义框架或包含框架的视图。根据设备性能或设备上的其他负载,view init 可能发生在 sdk init 之前或之后,这可能会导致这么长的错误。
  • 其实我没有使用任何地图UI组件的SDK,为什么它需要一个框架?你在哪里可以看到它需要一个框架? API 文档中有详细说明吗?
  • 找到地图初始化here

标签: ios sdk crash here-api


【解决方案1】:

您的代码似乎没有初始化 HERE SDK。如果您显示地图视图,您需要自己致电SDKInitializer.initializeIfNecessary(),或者当您想设置凭据时,请致电:

do {
    try SDKInitializer.initialize(options: sdkOptions)
} catch {
    fatalError("Failed to initialize HERE SDK. Cause: \(error)")
}

您问题中的代码可用于重置已初始化 HERE SDK 的选项。我从最新的HERE SDK documentation 获取了这些信息。

【讨论】:

  • 我根据您的建议更新并发布了代码,但我们仍然遇到同样的问题。幸运的是,它似乎并没有经常发生,但仍然是一个可能应该修复的崩溃。
猜你喜欢
  • 2018-03-15
  • 1970-01-01
  • 1970-01-01
  • 2014-02-16
  • 1970-01-01
  • 1970-01-01
  • 2016-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多