【发布时间】: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