Iphone Cocos2dx iOS批准的应用程序崩溃

Iphone Cocos2dx iOS批准的应用程序崩溃,iphone,ios,cocos2d-iphone,cocos2d-x,Iphone,Ios,Cocos2d Iphone,Cocos2d X,因此,我在这个极其奇怪和恼人的问题上被困了几天。因此,我有一个应用程序,我发布到ios应用程序商店,我最近回去,并添加了一些额外的功能,以应用程序。我没有触及应用程序的核心,只是添加了twitter、facebook、应用内购买和google admob(基于完整版本的免费版本)。这就是事情变得奇怪的地方。我测试了我的更新,我做了一个临时发布版本,并在我的iPhone3GS、4s和iPad2上进行了测试——一点问题都没有。我向苹果提交了他们批准的更新,并发布了。我更新了应用程序,并试图运行它,在

因此,我在这个极其奇怪和恼人的问题上被困了几天。因此,我有一个应用程序,我发布到ios应用程序商店,我最近回去,并添加了一些额外的功能,以应用程序。我没有触及应用程序的核心,只是添加了twitter、facebook、应用内购买和google admob(基于完整版本的免费版本)。这就是事情变得奇怪的地方。我测试了我的更新,我做了一个临时发布版本,并在我的iPhone3GS、4s和iPad2上进行了测试——一点问题都没有。我向苹果提交了他们批准的更新,并发布了。我更新了应用程序,并试图运行它,在启动屏幕之后,boom崩溃(这里再次没有任何更改)。我的项目使用cocos2dx框架(版本cocos2d-2.0-x-2.0.4@2012年11月2日),我使用cocosbuilder(2.1)。我查看了日志,它似乎是CCBReader::readFloat()函数内部的一个不对齐问题。我发现这里有一个修复程序:

因此,我继续修改了我的默认案例: float-CCBReader::readFloat(){ 无符号字符类型=this->readByte()

为此:

    float CCBReader::readFloat() {
        unsigned char type = this->readByte();

        switch (type) {
            case kCCBFloat0:
                return 0;    
            case kCCBFloat1:
                return 1;
            case kCCBFloatMinus1:
                return -1;
            case kCCBFloat05:
                return 0.5f;
            case kCCBFloatInteger:
                return (float)this->readInt(true);
            default:
                {
                    /* using a memcpy since the compiler isn't
                     * doing the float ptr math correctly on device.
                     * TODO still applies in C++ ? */
                    float * pF = (float*)(this->mBytes + this->mCurrentByte);
                    float f = 0;

                    memcpy((void*) &f, (const void*) pF, sizeof(float));

                    this->mCurrentByte += sizeof(float);


                    return f;
                }
        }
    }        
再次测试一个基于设备的发布版本,没有isses。我向苹果提交了此修复程序,并要求进行快速审查,以便应用程序能够运行而不是崩溃,它在1天内获得了苹果的批准,并已发布。我更新了新版本发布,并再次崩溃

以下是崩溃日志的副本:

Incident Identifier: DCFEA2A4-9707-4FF7-A4B7-26CF61B4A73F
CrashReporter Key:   b91e2f134184158618753244f837ff2ac5114f0d
Hardware Model:      iPhone4,1
Process:         GAMEAPP [848]
Path:            /var/mobile/Applications/F860F02C-3D16-4995-A19F-CE036200209F/GAMEAPP.app/GAMEAPP
Identifier:      GAMEAPP
Version:         ??? (???)
Code Type:       ARM (Native)
Parent Process:  launchd [1]

Date/Time:       2013-03-01 19:42:44.987 -0500
OS Version:      iOS 6.1.2 (10B146)
Report Version:  104

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: EXC_ARM_DA_ALIGN at 0x1f0807c9
Crashed Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   GAMEAPP                     0x000f971c cocos2d::extension::CCBReader::readFloat() (CCBReader.cpp:422)
1   GAMEAPP                     0x000f9e52 cocos2d::extension::CCBReader::readKeyframe(int) (CCBReader.cpp:648)
2   GAMEAPP                     0x000f99ae cocos2d::extension::CCBReader::readNodeGraph(cocos2d::CCNode*) (CCBReader.cpp:509)
3   GAMEAPP                     0x000f9c20 cocos2d::extension::CCBReader::readNodeGraph(cocos2d::CCNode*) (CCBReader.cpp:586)
4   GAMEAPP                     0x000f9342 cocos2d::extension::CCBReader::readFileWithCleanUp(bool) (CCBReader.cpp:689)
5   GAMEAPP                     0x000f92ec cocos2d::extension::CCBReader::readNodeGraphFromData(cocos2d::extension::CCData*, cocos2d::CCObject*, cocos2d::CCSize const&, cocos2d::extension::CCBAnimationManager**) (CCBReader.cpp:230)
6   GAMEAPP                     0x000f91aa cocos2d::extension::CCBReader::readNodeGraphFromFile(char const*, cocos2d::CCObject*, cocos2d::CCSize const&, cocos2d::extension::CCBAnimationManager**) (CCBReader.cpp:213)
7   GAMEAPP                     0x000f90a4 cocos2d::extension::CCBReader::readNodeGraphFromFile(char const*, cocos2d::CCObject*) (CCBReader.cpp:192)
8   GAMEAPP                     0x00119b50 IntroScene::init() (IntroScene.cpp:55)
9   GAMEAPP                     0x00119ca8 IntroScene::create() (IntroScene.h:19)
10  GAMEAPP                     0x00119a7c IntroScene::scene() (IntroScene.cpp:22)
11  GAMEAPP                     0x00110290 AppDelegate::applicationDidFinishLaunching() (AppDelegate.cpp:144)
12  GAMEAPP                     0x000dab94 cocos2d::CCApplication::run() (CCApplication.mm:50)
13  GAMEAPP                     0x000b6610 -[AppController application:didFinishLaunchingWithOptions:] (AppController.mm:76)
14  UIKit                           0x36522ad4 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 248
15  UIKit                           0x3652265e -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1186
16  UIKit                           0x3651a846 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 694
17  UIKit                           0x364c2c34 -[UIApplication handleEvent:withNewEvent:] + 1000
18  UIKit                           0x364c26c8 -[UIApplication sendEvent:] + 68
19  UIKit                           0x364c2116 _UIApplicationHandleEvent + 6150
20  GraphicsServices                0x381d85a0 _PurpleEventCallback + 588
21  GraphicsServices                0x381d81ce PurpleEventCallback + 30
22  CoreFoundation                  0x3468f170 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 32
23  CoreFoundation                  0x3468f112 __CFRunLoopDoSource1 + 134
24  CoreFoundation                  0x3468df94 __CFRunLoopRun + 1380
25  CoreFoundation                  0x34600eb8 CFRunLoopRunSpecific + 352
26  CoreFoundation                  0x34600d44 CFRunLoopRunInMode + 100
27  UIKit                           0x36519480 -[UIApplication _run] + 664
28  UIKit                           0x365162fc UIApplicationMain + 1116
29  GAMEAPP                     0x000b6c22 main (main.m:14)
30  GAMEAPP                     0x000b6344 start + 36

Thread 1:
0   libsystem_kernel.dylib          0x3c8d5d98 __workq_kernreturn + 8
1   libsystem_c.dylib               0x3c823cf6 _pthread_workq_return + 14
2   libsystem_c.dylib               0x3c823a12 _pthread_wqthread + 362
3   libsystem_c.dylib               0x3c8238a0 start_wqthread + 4

Thread 2 name:  Dispatch queue: com.apple.libdispatch-manager
Thread 2:
0   libsystem_kernel.dylib          0x3c8c5648 kevent64 + 24
1   libdispatch.dylib               0x3c7f5974 _dispatch_mgr_invoke + 792
2   libdispatch.dylib               0x3c7f5654 _dispatch_mgr_thread$VARIANT$mp + 32

Thread 3:
0   libsystem_kernel.dylib          0x3c8d5d98 __workq_kernreturn + 8
1   libsystem_c.dylib               0x3c823cf6 _pthread_workq_return + 14
2   libsystem_c.dylib               0x3c823a12 _pthread_wqthread + 362
3   libsystem_c.dylib               0x3c8238a0 start_wqthread + 4

Thread 4 name:  WebThread
Thread 4:
0   libsystem_kernel.dylib          0x3c8c4eb4 mach_msg_trap + 20
1   libsystem_kernel.dylib          0x3c8c5048 mach_msg + 36
2   CoreFoundation                  0x3468f040 __CFRunLoopServiceMachPort + 124
3   CoreFoundation                  0x3468dd9e __CFRunLoopRun + 878
4   CoreFoundation                  0x34600eb8 CFRunLoopRunSpecific + 352
5   CoreFoundation                  0x34600d44 CFRunLoopRunInMode + 100
6   WebCore                         0x3a60a500 RunWebThread(void*) + 440
7   libsystem_c.dylib               0x3c82e30e _pthread_start + 306
8   libsystem_c.dylib               0x3c82e1d4 thread_start + 4

Thread 5 name:  AURemoteIO::IOThread
Thread 5:
0   libsystem_kernel.dylib          0x3c8c4eb4 mach_msg_trap + 20
1   libsystem_kernel.dylib          0x3c8c5048 mach_msg + 36
2   AudioToolbox                    0x3418391c AURemoteIO::IOThread::Run() + 104
3   AudioToolbox                    0x34185c84 AURemoteIO::IOThread::Entry(void*) + 4
4   AudioToolbox                    0x340c3882 CAPThread::Entry(CAPThread*) + 294
5   libsystem_c.dylib               0x3c82e30e _pthread_start + 306
6   libsystem_c.dylib               0x3c82e1d4 thread_start + 4

Thread 0 crashed with ARM Thread State (32-bit):
    r0: 0x1ed49740    r1: 0x1f0807c9      r2: 0x000001cd      r3: 0x000001c8
    r4: 0x00000004    r5: 0x1ed49740      r6: 0x42480000      r7: 0x2fd4af48
    r8: 0xffffffff    r9: 0x000001c9     r10: 0x1ed49740     r11: 0x1ed4a8a0
    ip: 0x000001c7    sp: 0x2fd4af48      lr: 0x000f9e57      pc: 0x000f971c
  cpsr: 0x00000030

Binary Images:
我确实修改了其他链接器标志以包括-lsqlite3.0和-ObjC(最初只是-lxml2和-lz)

还有其他人有这个问题吗?我不知道如何调试,因为我无法重新编写。最后,苹果是如何批准该应用程序的,但它在启动屏幕后立即崩溃的?如果我能猜到运行该应用程序的时间,它可能会在应用程序批准后出现“应用商店处理”阶段(不确定)

谢谢!

我想“WTF CCB在那里做什么?”…无论如何,尝试使用-O3或根本不进行优化。-操作系统会引起微妙的问题,尤其是cocos2d。有一个原因是-Os不是cocos2d的默认级别(我也相信Xcode模板)


如果这解决了问题,您可以使用其中一个答案设置优化级别或禁用此文件或函数的优化。

根据您最后的陈述,我的第一反应是,苹果声称已解决的“应用程序更新错误”尚未完全解决e更新,在启动时会立即导致更新的应用程序崩溃。

有很多类似的问题都与应用程序更新崩溃错误有关。有一些最佳实践或解决办法,苹果公司没有专门记录,以避免更新错误。一定要查看它们。其中一个可能会为你锻炼,如果它不是你的应用程序特有的


这篇关于CCBReader中EXC\u BAD\u访问错误的帖子帮助我解决了完全相同的问题:


事实证明,这与CCBReader中的内存失调有关,CCBReader在sim卡上运行正常,但在设备上由于其ARM处理器而崩溃。

我知道一个解决办法。编辑该方案以生成
调试
而不是
发布
,它似乎不会爆炸

我也有两次被拒绝。诀窍是我有一个版本(免费)的应用程序通过,另一个版本(高级)崩溃。我追查了这个差异,并确认了这个差异

CCBReader 2.0

调试/发布的副作用可能是优化,如@learncos2D所述


优化解决方案:

  • 选择目标
  • 选择构建阶段选项卡
  • 展开“编译源代码”项。 它应该列出所有编译的文件。如果您注意到顶部有第二列“编译器标志”
  • 选择CCBReader.m
  • 双击“编译器标志”列
  • 输入“-O0”

为我解决了问题。

您正在使用ccbi文件创建UI,游戏随机崩溃,因为您没有在类的init方法中将引用变量设置为nullptr

例如,我在intorScene.h文件中声明了Label*homelab;,在.cpp file init方法中,您应该将此变量设置为


homeLabel=nullptr;

嗨,LearnCos2D,谢谢你的回复。所以我想我会继续尝试在没有任何优化的情况下再次推送此更新。我运行了我计划提交的发布版本,以查看是否有任何不可忽视的差异,并且游戏仍然运行我在iphone 4s上测试的相同版本。ipad视网膜会变慢吗?有什么变化在我的下一次更新中,我是否应该重新启用-Os优化并执行此操作#pragma GCC push_options#pragma GCC options(“O0”)CCBReader::readFloat();#pragma GCC pop_options根本不使用-Os,请使用默认值(O3)。
Incident Identifier: DCFEA2A4-9707-4FF7-A4B7-26CF61B4A73F
CrashReporter Key:   b91e2f134184158618753244f837ff2ac5114f0d
Hardware Model:      iPhone4,1
Process:         GAMEAPP [848]
Path:            /var/mobile/Applications/F860F02C-3D16-4995-A19F-CE036200209F/GAMEAPP.app/GAMEAPP
Identifier:      GAMEAPP
Version:         ??? (???)
Code Type:       ARM (Native)
Parent Process:  launchd [1]

Date/Time:       2013-03-01 19:42:44.987 -0500
OS Version:      iOS 6.1.2 (10B146)
Report Version:  104

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: EXC_ARM_DA_ALIGN at 0x1f0807c9
Crashed Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   GAMEAPP                     0x000f971c cocos2d::extension::CCBReader::readFloat() (CCBReader.cpp:422)
1   GAMEAPP                     0x000f9e52 cocos2d::extension::CCBReader::readKeyframe(int) (CCBReader.cpp:648)
2   GAMEAPP                     0x000f99ae cocos2d::extension::CCBReader::readNodeGraph(cocos2d::CCNode*) (CCBReader.cpp:509)
3   GAMEAPP                     0x000f9c20 cocos2d::extension::CCBReader::readNodeGraph(cocos2d::CCNode*) (CCBReader.cpp:586)
4   GAMEAPP                     0x000f9342 cocos2d::extension::CCBReader::readFileWithCleanUp(bool) (CCBReader.cpp:689)
5   GAMEAPP                     0x000f92ec cocos2d::extension::CCBReader::readNodeGraphFromData(cocos2d::extension::CCData*, cocos2d::CCObject*, cocos2d::CCSize const&, cocos2d::extension::CCBAnimationManager**) (CCBReader.cpp:230)
6   GAMEAPP                     0x000f91aa cocos2d::extension::CCBReader::readNodeGraphFromFile(char const*, cocos2d::CCObject*, cocos2d::CCSize const&, cocos2d::extension::CCBAnimationManager**) (CCBReader.cpp:213)
7   GAMEAPP                     0x000f90a4 cocos2d::extension::CCBReader::readNodeGraphFromFile(char const*, cocos2d::CCObject*) (CCBReader.cpp:192)
8   GAMEAPP                     0x00119b50 IntroScene::init() (IntroScene.cpp:55)
9   GAMEAPP                     0x00119ca8 IntroScene::create() (IntroScene.h:19)
10  GAMEAPP                     0x00119a7c IntroScene::scene() (IntroScene.cpp:22)
11  GAMEAPP                     0x00110290 AppDelegate::applicationDidFinishLaunching() (AppDelegate.cpp:144)
12  GAMEAPP                     0x000dab94 cocos2d::CCApplication::run() (CCApplication.mm:50)
13  GAMEAPP                     0x000b6610 -[AppController application:didFinishLaunchingWithOptions:] (AppController.mm:76)
14  UIKit                           0x36522ad4 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 248
15  UIKit                           0x3652265e -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1186
16  UIKit                           0x3651a846 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 694
17  UIKit                           0x364c2c34 -[UIApplication handleEvent:withNewEvent:] + 1000
18  UIKit                           0x364c26c8 -[UIApplication sendEvent:] + 68
19  UIKit                           0x364c2116 _UIApplicationHandleEvent + 6150
20  GraphicsServices                0x381d85a0 _PurpleEventCallback + 588
21  GraphicsServices                0x381d81ce PurpleEventCallback + 30
22  CoreFoundation                  0x3468f170 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 32
23  CoreFoundation                  0x3468f112 __CFRunLoopDoSource1 + 134
24  CoreFoundation                  0x3468df94 __CFRunLoopRun + 1380
25  CoreFoundation                  0x34600eb8 CFRunLoopRunSpecific + 352
26  CoreFoundation                  0x34600d44 CFRunLoopRunInMode + 100
27  UIKit                           0x36519480 -[UIApplication _run] + 664
28  UIKit                           0x365162fc UIApplicationMain + 1116
29  GAMEAPP                     0x000b6c22 main (main.m:14)
30  GAMEAPP                     0x000b6344 start + 36

Thread 1:
0   libsystem_kernel.dylib          0x3c8d5d98 __workq_kernreturn + 8
1   libsystem_c.dylib               0x3c823cf6 _pthread_workq_return + 14
2   libsystem_c.dylib               0x3c823a12 _pthread_wqthread + 362
3   libsystem_c.dylib               0x3c8238a0 start_wqthread + 4

Thread 2 name:  Dispatch queue: com.apple.libdispatch-manager
Thread 2:
0   libsystem_kernel.dylib          0x3c8c5648 kevent64 + 24
1   libdispatch.dylib               0x3c7f5974 _dispatch_mgr_invoke + 792
2   libdispatch.dylib               0x3c7f5654 _dispatch_mgr_thread$VARIANT$mp + 32

Thread 3:
0   libsystem_kernel.dylib          0x3c8d5d98 __workq_kernreturn + 8
1   libsystem_c.dylib               0x3c823cf6 _pthread_workq_return + 14
2   libsystem_c.dylib               0x3c823a12 _pthread_wqthread + 362
3   libsystem_c.dylib               0x3c8238a0 start_wqthread + 4

Thread 4 name:  WebThread
Thread 4:
0   libsystem_kernel.dylib          0x3c8c4eb4 mach_msg_trap + 20
1   libsystem_kernel.dylib          0x3c8c5048 mach_msg + 36
2   CoreFoundation                  0x3468f040 __CFRunLoopServiceMachPort + 124
3   CoreFoundation                  0x3468dd9e __CFRunLoopRun + 878
4   CoreFoundation                  0x34600eb8 CFRunLoopRunSpecific + 352
5   CoreFoundation                  0x34600d44 CFRunLoopRunInMode + 100
6   WebCore                         0x3a60a500 RunWebThread(void*) + 440
7   libsystem_c.dylib               0x3c82e30e _pthread_start + 306
8   libsystem_c.dylib               0x3c82e1d4 thread_start + 4

Thread 5 name:  AURemoteIO::IOThread
Thread 5:
0   libsystem_kernel.dylib          0x3c8c4eb4 mach_msg_trap + 20
1   libsystem_kernel.dylib          0x3c8c5048 mach_msg + 36
2   AudioToolbox                    0x3418391c AURemoteIO::IOThread::Run() + 104
3   AudioToolbox                    0x34185c84 AURemoteIO::IOThread::Entry(void*) + 4
4   AudioToolbox                    0x340c3882 CAPThread::Entry(CAPThread*) + 294
5   libsystem_c.dylib               0x3c82e30e _pthread_start + 306
6   libsystem_c.dylib               0x3c82e1d4 thread_start + 4

Thread 0 crashed with ARM Thread State (32-bit):
    r0: 0x1ed49740    r1: 0x1f0807c9      r2: 0x000001cd      r3: 0x000001c8
    r4: 0x00000004    r5: 0x1ed49740      r6: 0x42480000      r7: 0x2fd4af48
    r8: 0xffffffff    r9: 0x000001c9     r10: 0x1ed49740     r11: 0x1ed4a8a0
    ip: 0x000001c7    sp: 0x2fd4af48      lr: 0x000f9e57      pc: 0x000f971c
  cpsr: 0x00000030

Binary Images: