【问题标题】:Cocos2d App Crashing After Launch Image on iPhone 5?Cocos2d App 在 iPhone 5 上启动图像后崩溃?
【发布时间】:2025-11-30 07:45:01
【问题描述】:

我已经搜索过了,几乎没有这方面的信息。我的朋友有一部 iPhone 5,我给他发了我的应用程序的构建,它安装得很好。他去打开应用程序,它在启动屏幕后崩溃。我现在无法从他那里得到崩溃报告,所以我想知道是否有人知道快速修复或为什么它会在 iPhone 5 上崩溃并在运行相同版本 iOS 的 iPhone 4s 上完美运行的原因作为他的 iPhone 5?

我有最新版本的 iOS 版 cocos2d,如果你愿意,我可以发布我的应用委托/介绍层。但在大多数情况下,它是默认的东西。

有什么想法或明显的事情要改变吗?

我将发布我的应用委托:

// Create the main window
    window_ = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];


    // Create an CCGLView with a RGB565 color buffer, and a depth buffer of 0-bits
    CCGLView *glView = [CCGLView viewWithFrame:[window_ bounds]
                                   pixelFormat:kEAGLColorFormatRGB565   //kEAGLColorFormatRGBA8
                                   depthFormat:0    //GL_DEPTH_COMPONENT24_OES
                            preserveBackbuffer:NO
                                    sharegroup:nil
                                 multiSampling:NO
                               numberOfSamples:0];

    director_ = (CCDirectorIOS*) [CCDirector sharedDirector];

    director_.wantsFullScreenLayout = YES;

    // Display FSP and SPF
    [director_ setDisplayStats:YES];

    // set FPS at 60
    [director_ setAnimationInterval:1.0/60];

    // attach the openglView to the director
    [director_ setView:glView];

    // for rotation and other messages
    [director_ setDelegate:self];

    // 2D projection
    [director_ setProjection:kCCDirectorProjection2D];
//  [director setProjection:kCCDirectorProjection3D];

    // Enables High Res mode (Retina Display) on iPhone 4 and maintains low res on all other devices
    [director_ enableRetinaDisplay:NO];

    // Default texture format for PNG/BMP/TIFF/JPEG/GIF images
    // It can be RGBA8888, RGBA4444, RGB5_A1, RGB565
    // You can change anytime.
    [CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888];

    // If the 1st suffix is not found and if fallback is enabled then fallback suffixes are going to searched. If none is found, it will try with the name without suffix.
    // On iPad HD  : "-ipadhd", "-ipad",  "-hd"
    // On iPad     : "-ipad", "-hd"
    // On iPhone HD: "-hd"
    CCFileUtils *sharedFileUtils = [CCFileUtils sharedFileUtils];
    [sharedFileUtils setEnableFallbackSuffixes:NO];             // Default: NO. No fallback suffixes are going to be used
    [sharedFileUtils setiPhoneRetinaDisplaySuffix:@"-hd"];      // Default on iPhone RetinaDisplay is "-hd"
    [sharedFileUtils setiPadSuffix:@"-ipad"];                   // Default on iPad is "ipad"
    [sharedFileUtils setiPadRetinaDisplaySuffix:@"-ipadhd"];    // Default on iPad RetinaDisplay is "-ipadhd"

    // Assume that PVR images have premultiplied alpha
    [CCTexture2D PVRImagesHavePremultipliedAlpha:YES];

    // and add the scene to the stack. The director will run it when it automatically when the view is displayed.
    [director_ pushScene: [IntroLayer scene]]; 


    // Create a Navigation Controller with the Director
    navController_ = [[UINavigationController alloc] initWithRootViewController:director_];
    navController_.navigationBarHidden = YES;

    // set the Navigation Controller as the root view controller
//  [window_ addSubview:navController_.view];   // Generates flicker.
    [window_ setRootViewController:navController_];

    // make main window visible
    [window_ makeKeyAndVisible];

    // load game center
    [GameCenterManager loadState];
    [[GameCenterManager sharedGameCenterManager] authenticateLocalPlayer];

【问题讨论】:

  • 这更有可能是证书的问题......我会使用 testflight 之类的东西来在线获取崩溃报告。
  • 获取崩溃报告 - 在天空中戳洞没有意义,它无助于让您接近修复
  • 我缩小了范围,它恰好是我的游戏中心类中的这一行:[localPlayer authenticateWithCompletionHandler:^(NSError *error) {
  • 我在控制台中返回了一个 SIGABRT 错误:'UIApplicationInvalidInterfaceOrientation',原因:'支持的方向与应用程序没有共同的方向,并且 shouldAutorotate 正在返回 YES'

标签: iphone cocos2d-iphone iphone-5


【解决方案1】:

发现了问题,我的 GameCenter 本地玩家身份验证需要启用纵向,而横向是唯一启用的。

【讨论】: