Не удается воспроизвести сбой обзора приложения Apple iOS

Я недавно отправил свое приложение для iOS в Apple на рассмотрение. Он был написан на C# с использованием Xamarin iOS, Monotouch и Monogame. Я использовал Xamarin IDE для разработки. Неделю спустя я получаю отклонение, в котором указана причина, по которой приложение падает на iPad, когда рецензент пытается получить доступ к магазину In-App-Purchase, в то время как на iPhone 5s оно не падает, но указывает, что оно не может добраться до серверов Apple, чтобы получить предметы из магазина. Большая часть моего магазина, получающего код, взята из руководства Хамарина, найденного здесь.

Проблема в том, что я не мог воспроизвести эти сбои. Магазин прекрасно открывается со мной, и я тщательно его протестировал. Я тестировал на всех симуляторах и на многих реальных устройствах в конфигурациях отладки и выпуска (iPhone 4, iPhone 5, iPhone 5s, iPad 3-го поколения). Я не проводил тестирование в режиме ad-hoc, поскольку многие из этих устройств были заимствованы у моих друзей, и я не хотел синхронизировать их в iTunes, поскольку это могло стереть данные с устройства. Поэтому я надеюсь, что сборка релиза и ad-hoc эквивалентны с точки зрения обнаружения ошибки команды обзора.

Что касается журналов сбоев, предоставленных мне Apple, они не помогли мне, так как большинство строк неправильно обозначаются в Xcode, используя тот же архив, который я отправил в Apple. В журнале много строк '___lldb_unnamed_function'. Все, что я смог сказать, это то, что сбой произошел при попытке найти магазин. Поэтому я застрял и не уверен, что делать дальше. Совет ценится.

Ниже приведена последняя часть длинного журнала аварий.

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

1 ответ

Решение

Вы можете определить, идентичны ли сборки из двух разных конфигураций (скажем, Release и Ad-Hoc), сравнив параметры проекта. В частности, посмотрите на Build/Compiler а также Build/iOS Build страницы и убедитесь, что все параметры идентичны.

Что касается отчета о сбое, у нас, к сожалению, была ошибка с генерацией dSYM в Xamarin.iOS 7.0.4, поэтому управляемые кадры не будут правильно символизированы (это является причиной для всех записей lldb_unnamed_function). Однако я могу сказать, что происходит сбой приложения из-за необработанного управляемого исключения.

Если вы не можете воспроизвести проблему самостоятельно, я бы рекомендовал пересобрать ваше приложение с Xamarin.iOS 7.0.6 (в настоящее время в бета-канале) и повторно отправить его в Apple. Приложение может все еще аварийно завершить работу, но вы должны получить лучшие отчеты о сбоях, которые по крайней мере сообщат вам, где происходит управляемое исключение.

Другие вопросы по тегам