Не удается воспроизвести сбой обзора приложения 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. Приложение может все еще аварийно завершить работу, но вы должны получить лучшие отчеты о сбоях, которые по крайней мере сообщат вам, где происходит управляемое исключение.