我正在使用 iOS 5.0 SDK 在 Unity 3.4.2f、XCode 版本 4.2.1 中进行开发。
我的游戏由一个主菜单和一个加载主场景的播放按钮组成。该游戏可以由同事构建到设备上并且运行良好。每当我构建游戏时,它会在加载第二个场景时崩溃。一个多星期以来,这一直是我存在的祸根。
设备的崩溃日志如下所示:
Exception Type: EXC_BAD_ACCESS (SIGILL)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00ed4e90
Crashed Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 ??? 0x050000c0 0 + 83886272
1 ??? 0xfffffff8 0 + -8
Thread 1 name: Dispatch queue: com.apple.libdispatch-manager
Thread 1:
0 libsystem_kernel.dylib 0x33babfbc kevent + 24
1 libdispatch.dylib 0x328ebed4 _dispatch_mgr_invoke + 744
2 libdispatch.dylib 0x328ecf3a _dispatch_queue_invoke + 70
3 libdispatch.dylib 0x328ec4ec _dispatch_worker_thread2 + 228
4 libsystem_c.dylib 0x3489f58a _pthread_wqthread + 258
5 libsystem_c.dylib 0x3489fbbc start_wqthread + 0
*Note: Removed various other non-crashed threads through thread 11*
Thread 0 crashed with ARM Thread State:
r0: 0x01ab7094 r1: 0x00000000 r2: 0x00000000 r3: 0x3f800000
r4: 0x04020000 r5: 0x3987cc80 r6: 0x01004d08 r7: 0x080000c1
r8: 0xc1080000 r9: 0x00000000 r10: 0xc1050000 r11: 0xc1040000
ip: 0x2fdfe144 sp: 0x00ed4e9c lr: 0x00dfc558 pc: 0x050000c0
cpsr: 0x20000030
哪个不是最有帮助的,但是从我在这里和其他各种网站上阅读的内容来看,我应该能够使用像 0x050000c0 这样的内存地址来确定我在实际代码中崩溃的位置?首先是我们尝试过的其他一些事情......
该项目位于 SVN 存储库中,所以我已经删除了整个源目录并从 SVN 重新更新它,确保可以正确构建的同事也做了同样的事情。当这不起作用时,我让他向我发送他的 xcode 项目的 .zip 文件,以尝试构建它,但 Prime31 Unity 插件不喜欢那样,它们指向他的源文件夹,该文件夹位于不同的用户目录中他的机器。所以我让他压缩他的统一源并发送,这需要重新安装 Prime31 插件,然后我能够构建,但仍然得到相同的结果。在场景加载之间崩溃。
我们都使用完全相同的物理 iPad 设备进行构建。我们都针对 iOS 5.0 构建,而设备是 4.3.3。
我已经删除了所有 xcode 设置,然后从我的 Mac 中删除了整个 /Developer 文件夹并完全重新安装了 xcode。结果相同。我会尝试重新安装 Unity,但我不确定是否需要停用 Unity Pro 密钥然后重新激活?
我花了太多时间来让这件事变得复杂而困难。我知道这肯定是我无法理解的简单和愚蠢的事情,但我不再只见树木不见森林,所以我问你,亲爱的互联网!