iOS - как Crashlytics работает с отсутствующими dSYMS
У меня есть вопрос, касающийся dSYMS и как Crashlytics обрабатывает их.
Мое приложение содержит разные цели, и весь проект скомпилирован с bitcode enabled
из-за Watchkit App
а также Watchkit App Extension
цели.
Затем я проследовал за отсутствующей документацией dSYM, чтобы вручную загрузить свои отсутствующие dSYM. Это сработало, необходимые недостающие dSYM теперь чередуются на моей панели.
Но мне было интересно, как именно это работает? Эта версия моего приложения находится в AppStore на 1 месяц.
Буду ли я получать отчеты о сбоях только с сегодняшнего дня, когда я загрузил свои dSYM? Должен ли я вручную загружать для каждого выпуска?
Я не очень понимаю процесс.
1 ответ
Майк из ткани здесь.
dSYMs содержат символы для вашего приложения, необходимые для обеспечения полностью символизированных трассировок стека. Когда вы строите локально в XCode, dSYM находятся на вашем локальном компьютере, и поэтому фаза сборки сценария запуска Fabric может их загрузить.
Если битовый код включен, Apple перекомпилирует ваше приложение на своих серверах, создавая новые dSYM. Поскольку это происходит в их сервисах, у Fabric нет возможности загружать их автоматически. Apple предоставляет dSYM через Xcode или iTunesConnect. Поскольку мы не можем получить доступ к этим dSYM (нам нужны ваши учетные данные разработчика Apple, и мы не хотим их получать), вам нужно получить dSYM от Apple и загрузить их в Fabric для каждого выпуска через Apple или Testflight. Вы также можете использовать скрипт загрузки символов, чтобы загрузить их оптом. Скрипт загрузки символов также будет работать с машин CI.
Когда происходит сбой в Fabric, мы смотрим, есть ли у нас dSYM, необходимый для обозначения сбоя. Если мы этого не сделаем, мы сообщим вам об этом через панель управления и страницу настроек вашего приложения Fabric. Если в сбое отсутствует dSYM, мы будем хранить его в течение 7 дней. Если отсутствующий dSYM не загружен в это время, то мы сбросим аварийный отказ и не обработаем его. Если отсутствующий dSYM загружен, то аварийное завершение ставится в очередь для обработки, и обработка и отображение могут занять от нескольких минут до нескольких часов.
С учетом вышесказанного, лучший способ справиться с этим - использовать скрипт upload-symbols, чтобы получить нам символы, даже если о пропущенном dSYM еще не сообщалось, поэтому у нас есть символы при возникновении сбоя. Если у нас есть dSYM, когда сообщается о сбое, сбой будет обработан в течение нескольких секунд (в среднем).
Альтернативный подход заключается в использовании команды fastlane refresh_dsyms для получения dSYM и их загрузки.