2016-10-04 5 views
12

Я только что установил Crashlitycs, используя официальную инструкцию this.Crashlytics не показывает сбоев

Я поставил Debug Information Format является «DWARF с dSYM Файл», как для отладки и выпуска и инвалидов битового кода (некоторые люди писали, что это может помочь):

enter image description here

AppDelegate:

Fabric.sharedSDK().debug = true 
Fabric.with([Crashlytics.self]) 

Для имитации аварии я использую

Crashlytics.sharedInstance().crash() 

и

var ggg: Int! 
print(ggg) 

Crashlitics собирает информацию о сеансах. Например, он обновляет информацию расслоение версии:

enter image description here

Так связь с Crashlitics работает. Однако аварии информация пусто:

enter image description here

Я использую XCode 8 и IOS 9/10. Что я делаю неправильно?

EDIT:

Я испытал это на тренажере и устройства без подключения XCode отладчика (т.е. запускающего с экрана sumulator/устройства)

Наконец я получил отчеты некоторых Crashlytics через 7-8 часов после сбои. Я ожидал, что их раньше, потому что в соответствии с documentation:

В течение нескольких минут, вы должны увидеть аварии появляются на ткани Dashboard.

Однако я не получил всех сбоев, которых я ждал. Во время моих экспериментов я пробовал разные способы инициализации Crashlytics:

Fabric.with([Crashlytics.self]) 
and 
Fabric.with([Crashlytics.self()]) 

Не может быть причина? Я также нашел аналогичный без ответа question.

+1

Mike из Fabric здесь. Вы тестируете с подключенным отладчиком Xcode? –

+0

@MikeBonnell Я тестировал без подключения отладчика XCode. Я также обновил этот вопрос. Не могли бы вы это проверить? – Avt

+1

Если вы нажмете пробег в Xcode, тогда отладчик будет автоматически подключен. Вам нужно будет явно нажать Stop в Xcode, а затем запустить приложение из Simulator, не нажав Run. –

ответ

20

Проверено следующие термины,

  1. Убедитесь Crashlytics SDK линии после того, как все остальные строки SDK третьей стороны. (он должен быть последним, вызванным в вашем методе appDidFinishLaunching.)

  2. Принудительный сбой, а затем перезапустите приложение. Xcode необходимо отключить, чтобы он не перехватил отчет о сбое. Чтобы отключить Xcode, следуйте инструкциям here.

  3. Если вы используете [Crashlytics sharedInstance] crash]; для проверки сбоя, убедитесь, что это не в методе appDidFinishLaunching.

Это уже упоминалось в разделе поддержки, Вот дополнительные из них -

  1. Проверить в организации -> Ваше приложение -> Отсутствующие dSYM, Является ли это показывать недостающие dSYM файл

enter image description here

если да, то сделайте следующий шаг

  1. Щелкните правой кнопкой мыши на вашем архиве -> Показать в Finder -> правой кнопкой мыши на файл и нажмите на кнопку Показать содержимое пакета
  2. правой кнопкой мыши на dSYM файл -> содержимое Показать пакет -> Содержание -> Ресурсы -> карликовых (Open в терминале)
  3. команды
  4. Run dwarfdump --uuid «имя файла, который вы видели там в карликовой папку»

enter image description here

Это покажет все соответствующие UUID, И если перечисленные UUID согласованы с одной упомянутый в отсутствующем id dSYM, тогда просто сжимайте dSYM и загрузить его в crashlytics. Отсутствует сегмент dSYM.

Этот шаг является важной причиной того, что иногда файл dSYM, который мы извлекаем из органайзера, не содержит правильного UUID. И после загрузки неправильного мы ждем его обновлений. Поэтому лучше убедиться, что вы загружаете правый файл dSYM.

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

+0

Отличный ответ! –

+0

Даже нефатальные ошибки требуют отключения отладчика Xcode. – d512

3

Вам нужно запустить приложение, но не из Xcode.

Если вы используете устройство, просто запустите приложение без подключения usb. Если вы используете симулятор, остановите работу приложения с Xcode. Затем откройте его снова с помощью мыши.

Далее, перейдите к buttonPress или function, которые назовут Crashlytics.sharedInstance().crash().

После этого снова запустите приложение после сбоя. (Это может быть связано с консолью, если вы хотите). Этот шаг важен, потому что crashlytics сохраняют отчет о сбое перед тем, как приложение будет завершено.В следующий раз, когда вы откроете приложение, оно опубликует отчет до краш-тестов.

Документы here действительно объясняют проблему устранения неполадок.

+0

Я уже делал это так. Я написал об этом в разделе «EDIT». Однако я не отключу usb при тестировании на устройстве (но запуск приложения с устройства, а не XCode). Считаете ли вы, что это может быть важно? – Avt

Смежные вопросы