无法复制苹果iOS应用程序审查崩溃
我最近将我的iOS应用程序提交给Apple进行审查。 它是用C#编写的,使用Xamarin iOS,Monotouch和Monogame。 我使用Xamarin IDE进行开发。 一个星期后,我收到一个拒绝,指出当审阅者试图访问应用程序内购买商店时,应用程序在iPad上崩溃的原因,而在iPhone 5s上,它不会崩溃,但表明它不能到达Apple服务器以检索商店物品。 我的商店大部分检索代码是从这里find的Xamarin指南。
问题是我无法复制这些崩溃。 商店打开我很好,我广泛的testing。 我testing了所有的模拟器,以及debugging和发布configuration中的许多真实设备(iPhone 4,iPhone 5,iPhone 5s,iPad第三代)。 我没有在ad-hoc模式下进行testing,因为这些设备中的很多都是从我的朋友那里借来的,我不想在iTunes中同步,因为这可能会清除设备数据。 所以我希望发布版本和特设的等同于find审查小组的bug。
至于苹果给我的崩溃日志,他们没有帮助我,因为大多数的行都没有在Xcode中使用我提交给苹果公司的相同的存档文件进行正确的符号化。 日志中有很多'__lldb_unnamed_function'行。 所有我能够告诉的是,试图检索商店时发生了崩溃。 因此,我坚持不知道下一步该做什么。 build议表示赞赏。
以下是长期崩溃日志的最后部分。
Incident Identifier: 24777CEA-21FF-434B-A658-BFB4BC89F7B2 CrashReporter Key: e981dd69858f1d35ba231cd2e288f3d33625919f Hardware Model: xxx Version: 1 (1) Code Type: ARM (Native) Parent Process: launchd [1] Date/Time: 2014-01-09 13:30:21.579 -0800 OS Version: iOS 7.0.4 (11B554a) Report Version: 104 Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Triggered by Thread: 0 Thread 0 name: Dispatch queue: com.apple.main-thread Thread 0 Crashed: 0 libsystem_kernel.dylib 0x387e41fc __pthread_kill + 8 1 libsystem_pthread.dylib 0x3884ba4f pthread_kill + 55 2 libsystem_c.dylib 0x38795029 abort + 73 3 MyGame 0x00d8036d mono_handle_native_sigsegv (mini-exceptions.c:2413) 4 MyBeGame 0x00d855b7 sigabrt_signal_handler (mini-posix.c:206) 5 libsystem_platform.dylib 0x38846721 _sigtramp + 41 6 libsystem_pthread.dylib 0x3884ba4f pthread_kill + 55 7 libsystem_c.dylib 0x38795029 abort + 73 8 MyBeGame 0x00e30744 monotouch_unhandled_exception_handler (monotouch-glue.m:1436) 9 MyBeGame 0x00d8072d mono_invoke_unhandled_exception_hook (mini-exceptions.c:2749) 10 MyBeGame 0x00d8d7ab mono_thread_abort_dummy (mini.c:2768) 11 MyBeGame 0x00d7ff35 mono_handle_exception_internal (mini-exceptions.c:1710) 12 MyBeGame 0x00d7f6b7 mono_handle_exception (mini-exceptions.c:2003) 13 MyBeGame 0x00d791b5 mono_arm_throw_exception (exceptions-arm.c:161) 14 MyBeGame 0x0023f7d4 ___lldb_unnamed_function12968$$MyBeGame + 64 15 MyBeGame 0x002da1d0 ___lldb_unnamed_function20307$$MyBeGame + 92 16 MyBeGame 0x00293960 ___lldb_unnamed_function17583$$MyBeGame + 196 17 MyBeGame 0x00212418 ___lldb_unnamed_function12101$$MyBeGame + 168 18 MyBeGame 0x0029205c ___lldb_unnamed_function17574$$MyBeGame + 92 19 MyBeGame 0x00295c58 ___lldb_unnamed_function17610$$MyBeGame + 32 20 MyBeGame 0x00083570 ___lldb_unnamed_function2892$$MyBeGame + 860 21 MyBeGame 0x000954f4 ___lldb_unnamed_function3194$$MyBeGame + 1516 22 MyBeGame 0x00093610 ___lldb_unnamed_function3176$$MyBeGame + 40 23 MyBeGame 0x0006246c MyBeGame.HintStoreController.HintStoreControl/StateRetrieving:<Activate>m__F + 624 24 MyBeGame 0x0045d39c ___lldb_unnamed_function33945$$MyBeGame + 48 25 MyBeGame 0x0020c10c ___lldb_unnamed_function11957$$MyBeGame + 196 26 MyBeGame 0x00d8ce4f mono_jit_runtime_invoke (mini.c:6504) 27 MyBeGame 0x00dd482b mono_runtime_invoke (object.c:2827) 28 MyBeGame 0x00d5117b native_to_managed_trampoline_MonoTouch_Foundation_InternalNSNotificationHandler_Post (registrar.m:28) 29 CoreFoundation 0x2da4fe6f __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 11 30 CoreFoundation 0x2d9c3aad _CFXNotificationPost + 1717 31 Foundation 0x2e3a9ec1 -[NSNotificationCenter postNotificationName:object:userInfo:] + 69
您可以通过比较项目的选项来确定两种不同的configuration(比如Release和Ad-Hoc)是否相同。 特别看看Build/Compiler
和Build/iOS Build
页面,确保所有的选项都是相同的。
关于崩溃报告,我们不幸遇到了Xamarin.iOS 7.0.4中的dSYM生成错误 ,所以托pipe框架将不会正确表示(这是所有lldb_unnamed_function条目的原因)。 然而,我可以说的是,应用程序崩溃,因为有一个未处理的托pipeexception。
如果你无法自己重现问题,我build议用Xamarin.iOS 7.0.6(目前在testing版频道)重build你的应用程序,然后重新提交给苹果公司。 该应用程序可能仍会崩溃,但您应该得到更好的崩溃报告,至less会告诉您在哪里发生pipe理的exception。