App Cra sh в App Store, но работает в TestFlight - PullRequest
0 голосов
/ 25 мая 2020

Недавно я отправил (например, 5 га go) приложение Xamarin. IOS в AppStore, но оно дает сбой сразу после входа пользователя в систему. Мы провели тесты на симуляторах, устройствах и в тестовом полете. Он хорошо работает во всех сценариях ios, кроме случаев, когда пользователь загружает приложение из AppStore. Пока мы пробовали: 1. проверить cra sh логи

Exception Type:  EXC_BAD_ACCESS (SIGABRT)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000000
VM Region Info: 0 is not in any region.  Bytes before following region: 4296392704
      REGION TYPE                      START - END             [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
      UNUSED SPACE AT START
--->  
      __TEXT                 000000010015c000-0000000100420000 [ 2832K] r-x/r-x SM=COW  .../MyAwesomeAppName.iOS

Triggered by Thread:  0

Thread 0 name:  tid_407  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x00000001b20d2d88 __pthread_kill + 8
1   libsystem_pthread.dylib         0x00000001b1fef74c pthread_kill$VARIANT$armv81 + 216
2   libsystem_c.dylib               0x00000001b1f3e9b0 __abort + 112
3   libsystem_c.dylib               0x00000001b1f3e940 __abort + 0
4   MyAwesomeAppName.iOS                    0x00000001037211fc xamarin_localized_string_format_9 + 15196
5   MyAwesomeAppName.iOS                    0x0000000103715fb8 xamarin_get_block_descriptor + 7812
6   MyAwesomeAppName.iOS                    0x00000001035db9c4 gc.safepoint_poll + 52123060
7   MyAwesomeAppName.iOS                    0x00000001035709fc gc.safepoint_poll + 51684844
8   MyAwesomeAppName.iOS                    0x00000001035713f0 gc.safepoint_poll + 51687392
9   MyAwesomeAppName.iOS                    0x000000010356531c gc.safepoint_poll + 51638028
10  MyAwesomeAppName.iOS                    0x000000010053cd38 gc.safepoint_poll + 1141032
11  MyAwesomeAppName.iOS                    0x00000001015d5b58 gc.safepoint_poll + 18544456
12  MyAwesomeAppName.iOS                    0x0000000100426a40 gc.safepoint_poll + 1584
13  MyAwesomeAppName.iOS                    0x0000000100512480 gc.safepoint_poll + 966768
14  MyAwesomeAppName.iOS                    0x00000001035825fc gc.safepoint_poll + 51757548
15  MyAwesomeAppName.iOS                    0x000000010363dad8 gc.safepoint_poll + 52524744
16  MyAwesomeAppName.iOS                    0x0000000103643d30 gc.safepoint_poll + 52549920
17  MyAwesomeAppName.iOS                    0x0000000103560bb4 gc.safepoint_poll + 51619748
18  MyAwesomeAppName.iOS                    0x000000010371dc30 xamarin_localized_string_format_9 + 1424
19  MyAwesomeAppName.iOS                    0x0000000100423aac GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth + 993268
20  libdyld.dylib                   0x00000001b20dd8f0 start + 4

Попытаться воспроизвести его в среде отладки: Безуспешно

У нас закончились идеи, и было бы здорово, если бы кто-нибудь мог направить нас в правильном направлении, чтобы ответить на следующие вопросы: 1 Почему приложение не работает только в том случае, если пользователь скачивает его из AppStore, а оно работает при загрузке из TestFlight? 2. Как правильно расшифровать лог cra sh, чтобы лучше разобраться? Мы попытались символизировать это, но результат выглядит примерно так же, как и исходный журнал сбоев.

1 Ответ

0 голосов
/ 27 мая 2020

Я просто оставляю здесь наше решение, возможно, кто-то окажется перед той же дилеммой: поскольку аварийные журналы не указывали нам определенное место, мы начали думать о различиях между Testflight и AppStore. Единственное существенное различие, которое мы обнаружили, - это покупки в приложении. Итак, после короткого исследования кода мы обнаружили, что если покупки в приложении недоступны в магазине приложений, мы получаем нулевой указатель, который вызывает исключение, правильная обработка этого сценария решила проблему, поскольку наши покупки в приложении отставали. в процессе проверки AppStoreConnect. Если вы попадаете в тот же парадокс, вы можете проверить: 1. включен ли у вас битовый код 2. хорошо ли вы обрабатываете покупки в приложении 3. если у вас есть внешний API, который может вести себя по-разному в сценарии Testflight и Appstore ios.

...