Подтвердить что ты не робот

Только сбой при тестировании

Мы используем TestFlight для отправки пилотов нашего приложения.

Там есть часть приложения, которое рушится, и у нас было много проблем с воспроизведением сбоя. Код их довольно прост.

Оказывается, пользователи, которые получили приложение через TestFlight, получают сбой, а если вы создаете приложение и устанавливаете его с помощью IDE, это не сбой!

У кого-нибудь есть идеи о том, что может быть причиной этого?

Любые идеи для обходных решений? Мы не хотим прекращать использование TestFlight.

4b9b3361

Ответ 1

Обязательно создайте свое приложение в режиме выпуска, а не в Debug. Приложение может сбой только в Release.

Ответ 2

Первое, что я попробую, - сопоставить трассировку стека краха с именами функций в вашем приложении. Это может дать полезную информацию о характере аварии:

  • Как только сообщается о сбое, запрашивается журнал сбоев. Это можно получить с помощью организатора Xcode, или если это не вариант, он может быть снят с экрана iPhone Настройки → Общие → О программе → Диагностика и использование → Диагностика и использование данных. Выделите имя приложения или раздел LatestCrash-AppName.plist.
  • Хотя теоретически можно символизировать крах, я нахожу описанную ниже процедуру надежным способом получения символов из стека. Преобразуйте все адреса стека для уничтожающего потока в имена методов.
  • При необходимости запросите syslog iDevice. Это может включать сообщения об ошибках утверждения, которые также неоценимы. Обратите внимание, что это должно быть сделано как можно быстрее, так как в syslog хранится столько записей, прежде чем они будут удалены. Чтобы получить это, вы можете использовать Организатор или линию cmd line idevicesyslog.

Ручная символика: Это будет работать до тех пор, пока ваши сборки будут иметь отладочную информацию.

  • Получите _exact_same_.ipa, который разбился. Если вы его не сохранили, вы можете загрузить его с устройства с помощью iFunBox или утилиты cmd line ideviceinstaller.
  • Разархивируйте .ipa
  • Выполните следующую команду в исполняемом файле (Payload/AppName.app/AppName):

    otool -tv AppName.app | С++ filt > listing.asm

  • Подождите, пока предыдущий шаг завершится (может занять некоторое время). Сгенерированный файл listing.asm будет содержать несколько мегабайт.

  • Использование редактора, который может обрабатывать большие файлы, поиск listing.asm для адресов, перечисленных в трассировке стека. Обратите внимание, что адреса могут иметь несколько байтов (обычно указывая на 3 байта впереди). Кроме того, адреса, которые не найдены в списке .asm указывают адреса в iOS-библиотеках. Игнорируйте их пока.

Конечно, если вы можете символизировать, вы можете пропустить эту процедуру.

Удаленная отладка!

Ответ 3

У нас была аналогичная проблема. Проблема с нами была в статических библиотеках. Когда мы построили приложение с нуля и отправились в testflight, он рушился, но из IDE он не был. Сбой произошел из-за того, что статические библиотеки не включались при создании сборки, но включались, если я подключил iPad direct и использовал XCode для установки.

Простой тест докажет это: -

1.) Вместо того, чтобы строить из IDE, создайте файл .app, а затем загрузите его через iTunes и проверьте, не получилось ли вы сбой.

Мы работали над этим, создавая .iPA вручную, создавая .app, затем создавая папку Payload и помещая в нее .app, а также info.plist.

Затем все стало работать и в Testflight.