Ios 崩溃:com.apple.spritekit.renderQueue
我们正在开发一款SpriteKit iOS7游戏,该游戏运行良好,但如果我们集成了以下任意LIB,当它被发送到后台时,游戏就会崩溃: -飞艇。 -虫情。 -依附的 以下是Crashlytics崩溃报告: 线程:崩溃:com.apple.spritekit.renderQueueIos 崩溃:com.apple.spritekit.renderQueue,ios,sprite-kit,urbanairship.com,bugsense,apptentive,Ios,Sprite Kit,Urbanairship.com,Bugsense,Apptentive,我们正在开发一款SpriteKit iOS7游戏,该游戏运行良好,但如果我们集成了以下任意LIB,当它被发送到后台时,游戏就会崩溃: -飞艇。 -虫情。 -依附的 以下是Crashlytics崩溃报告: 线程:崩溃:com.apple.spritekit.renderQueue 0 libGPUSupportMercury.dylib 0x3478b8f6 gpus_ReturnNotPermittedKillClient 1 libGPUSupportMercury.dylib
0 libGPUSupportMercury.dylib 0x3478b8f6 gpus_ReturnNotPermittedKillClient
1 libGPUSupportMercury.dylib 0x3478c391 gpusSubmitDataBuffers
2 IMGSGX543GLDriver 0x2ec9982d SubmitPackets
3 GLEngine 0x320fbc3d gliPresentViewES + 172
4 OpenGLES 0x32106139 -[EAGLContext presentRenderbuffer:] + 64
5 SpriteKit 0x325701b1 -[SKView _renderContent] + 1216
6 libdispatch.dylib 0x3a6fdd07 _dispatch_client_callout + 22
7 libdispatch.dylib 0x3a703b9f _dispatch_barrier_sync_f_invoke + 26
8 SpriteKit 0x3256fcc3 -[SKView renderContent] + 82
9 SpriteKit 0x3256d663 __29-[SKView setUpRenderCallback]_block_invoke + 130
10 SpriteKit 0x3258fddb -[SKDisplayLink _callbackForNextFrame:] + 254
11 QuartzCore 0x3234f9cf CA::Display::DisplayLinkItem::dispatch() + 98
12 QuartzCore 0x3234f779 CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 344
13 IOMobileFramebuffer 0x34f4576d IOMobileFramebufferVsyncNotifyFunc + 104
14 IOKit 0x30be7a75 IODispatchCalloutFromCFMessage + 248
15 CoreFoundation 0x2fec5e21 __CFMachPortPerform + 136
16 CoreFoundation 0x2fed09df __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 34
17 CoreFoundation 0x2fed097b __CFRunLoopDoSource1 + 346
18 CoreFoundation 0x2fecf14f __CFRunLoopRun + 1398
19 CoreFoundation 0x2fe39c27 CFRunLoopRunSpecific + 522
20 CoreFoundation 0x2fe39a0b CFRunLoopRunInMode + 106
21 GraphicsServices 0x34b29283 GSEventRunModal + 138
22 UIKit 0x326dd049 UIApplicationMain + 1136
23 SplishyFish 0x000a95d1 main (main.m:16)
至少Apptentive不进行任何OpenGL调用。我怀疑将库添加到应用程序可能只是暴露了在某些其他上下文中可能发生的问题(例如,当应用程序正在后台运行时,主运行循环上有挂起的事件要处理) 也就是说,上面的回溯与此线程中的回溯相同: 这里提出了一个解决方案: 应用程序在后台运行时出现音频播放问题。这可能就是问题所在吗
如果不是,另一个可能的罪魁祸首将是,正如其他人所说的那样。至少Apptentive不进行任何OpenGL调用。我怀疑将库添加到应用程序可能只是暴露了在某些其他上下文中可能发生的问题(例如,当应用程序正在后台运行时,主运行循环上有挂起的事件要处理) 也就是说,上面的回溯与此线程中的回溯相同: 这里提出了一个解决方案: 应用程序在后台运行时出现音频播放问题。这可能就是问题所在吗
如果不是,另一个可能的罪魁祸首将是,正如其他人所说的那样。至少Apptentive不进行任何OpenGL调用。我怀疑将库添加到应用程序可能只是暴露了在某些其他上下文中可能发生的问题(例如,当应用程序正在后台运行时,主运行循环上有挂起的事件要处理) 也就是说,上面的回溯与此线程中的回溯相同: 这里提出了一个解决方案: 应用程序在后台运行时出现音频播放问题。这可能就是问题所在吗
如果不是,另一个可能的罪魁祸首将是,正如其他人所说的那样。至少Apptentive不进行任何OpenGL调用。我怀疑将库添加到应用程序可能只是暴露了在某些其他上下文中可能发生的问题(例如,当应用程序正在后台运行时,主运行循环上有挂起的事件要处理) 也就是说,上面的回溯与此线程中的回溯相同: 这里提出了一个解决方案: 应用程序在后台运行时出现音频播放问题。这可能就是问题所在吗
如果不是,另一个可能的罪魁祸首就是,正如其他人所说。我在一个不使用音频的游戏中解决了这个问题。解决方案是在进入背景时暂停SKView:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
SKView *view = (SKView *)self.window.rootViewController.view;
if (view) {
view.paused = YES;
}
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
SKView *view = (SKView *)self.window.rootViewController.view;
if (view) {
view.paused = NO;
}
}
我在一个不使用音频的游戏中解决了这个问题。解决方案是在进入背景时暂停SKView:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
SKView *view = (SKView *)self.window.rootViewController.view;
if (view) {
view.paused = YES;
}
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
SKView *view = (SKView *)self.window.rootViewController.view;
if (view) {
view.paused = NO;
}
}
我在一个不使用音频的游戏中解决了这个问题。解决方案是在进入背景时暂停SKView:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
SKView *view = (SKView *)self.window.rootViewController.view;
if (view) {
view.paused = YES;
}
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
SKView *view = (SKView *)self.window.rootViewController.view;
if (view) {
view.paused = NO;
}
}
我在一个不使用音频的游戏中解决了这个问题。解决方案是在进入背景时暂停SKView:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
SKView *view = (SKView *)self.window.rootViewController.view;
if (view) {
view.paused = YES;
}
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
SKView *view = (SKView *)self.window.rootViewController.view;
if (view) {
view.paused = NO;
}
}
我在Swift中遇到了同样的问题,我用以下代码解决了这个问题:
func applicationDidEnterBackground(application: UIApplication)
{
var skView:SKView = self.window?.rootViewController?.view as! SKView
skView.paused = true
}
func applicationWillEnterForeground(application: UIApplication)
{
var skView:SKView = self.window?.rootViewController?.view as! SKView
skView.paused = false
}
我在Swift中遇到了同样的问题,我用以下代码解决了这个问题:
func applicationDidEnterBackground(application: UIApplication)
{
var skView:SKView = self.window?.rootViewController?.view as! SKView
skView.paused = true
}
func applicationWillEnterForeground(application: UIApplication)
{
var skView:SKView = self.window?.rootViewController?.view as! SKView
skView.paused = false
}
我在Swift中遇到了同样的问题,我用以下代码解决了这个问题:
func applicationDidEnterBackground(application: UIApplication)
{
var skView:SKView = self.window?.rootViewController?.view as! SKView
skView.paused = true
}
func applicationWillEnterForeground(application: UIApplication)
{
var skView:SKView = self.window?.rootViewController?.view as! SKView
skView.paused = false
}
我在Swift中遇到了同样的问题,我用以下代码解决了这个问题:
func applicationDidEnterBackground(application: UIApplication)
{
var skView:SKView = self.window?.rootViewController?.view as! SKView
skView.paused = true
}
func applicationWillEnterForeground(application: UIApplication)
{
var skView:SKView = self.window?.rootViewController?.view as! SKView
skView.paused = false
}
GPU\u ReturnNotPermittedKillClient
几乎总是表示您在后台呈现OpenGL ES内容。发生这种情况时,您的应用程序将立即被终止。您需要确保在开始转换到背景后,Sprite Kit不会尝试渲染任何内容。@BradLarson,但为什么只有在我包含其中一个库(Airship、Bugsense或Apptentive)时才会崩溃,而在Sprite Kit场景中不更改任何代码的情况下对它们进行注释时才不会崩溃。当应用程序进入后台时,我应该如何使用spritekit使其停止渲染?您是否能够在带有模拟器的调试器中重现此情况?有可能你可以这样缩小范围。@原型,同样的情况也发生在模拟器和设备上如果它发生在模拟器和设备上,那么,您是否正在使用调试器捕获它发生的位置?gpu\ReturnNotPermittedKillClient
几乎总是指示您在后台呈现OpenGL ES内容。发生这种情况时,您的应用程序将立即被终止。您需要确保在开始转换到背景后,Sprite Kit不会尝试渲染任何内容。@BradLarson,但为什么只有在我包含其中一个库(Airship、Bugsense或Apptentive)时才会崩溃,而在Sprite Kit场景中不更改任何代码的情况下对它们进行注释时才不会崩溃。当应用程序进入后台时,我应该如何使用spritekit使其停止渲染?您是否能够在带有模拟器的调试器中重现此情况?有可能你可以这样缩小范围。@原型,同样的情况也发生在模拟器和设备上如果它发生在模拟器和设备上,那么,您是否正在使用调试器捕获它发生的位置?gpu\ReturnNotPermittedKillClient
几乎总是指示您在后台呈现OpenGL ES内容。发生这种情况时,您的应用程序将立即被终止。您需要确保在开始转换到背景后,Sprite Kit不会尝试渲染任何内容。@BradLarson,但为什么只有在我包含其中一个库(Airship、Bugsense或Apptentive)时才会崩溃,而在Sprite Kit场景中不更改任何代码的情况下对它们进行注释时才不会崩溃。当应用程序运行时,如何使用spritekit停止渲染