Firebase Crashlytics: отсутствуют ДОПОЛНИТЕЛЬНЫЕ dSYM - PullRequest
2 голосов
/ 06 мая 2020

Мы перешли с fabri c .io на Firebase, и вроде все в порядке, кроме одного. Мы используем Unity 2019.2.6 , целевая платформа - iOS, целевая архитектура - « Universal ».

Для загрузки dSYM Я упаковываю папку dSYMs из * .xcarchive в dSYMs.zip и загружаю ее в Firebase с помощью следующего кода

./upload-symbols -gsp <path_to_plist>/GoogleService-Info.plist -p ios <path_to_dSYMs.zip>/dSYMs.zip

В результате я вижу в своем терминале следующие строки:

Successfully submitted symbols for architecture arm64 with UUID <uuid_1> in dSYM: <path_to_unzipped_dsyms>/dSYMs/<myapp>.app.dSYM
Successfully submitted symbols for architecture armv7 with UUID <uuid_2> in dSYM: <path_to_unzipped_dsyms>/dSYMs/<myapp>.app.dSYM
Successfully uploaded Crashlytics symbols

После этого я вижу сбойные коды без символов на панели инструментов Crashlytics

Но также на вкладке Crashlytics dSYMs я вижу следующее:

Missing dSYMs 

UID <uuid_3> Version <my_version> Status **Optional** Crash count <count_1>
UID <uuid_4> Version <my_version> Status **Optional** Crash count <count_2>
<...>

Итак, вопросы:

  1. Почему эти отсутствующие dsyms Необязательные ?

  2. Откуда берутся эти отсутствующие uuid dsyms?

  3. Если эти uuid_3, uuid_4 являются uuid архитектур, поддерживаемых моим приложением и отличных от arm64 и armv7, то почему они не существуют в dSYMs.zip из * .xcarchive?

(dwarfdump показывает только архитектуры armv7 и arm64 в dSYM * .xcarchive)

Где я могу найти все необходимые dsyms для моего приложения?

Ответы [ 2 ]

3 голосов
/ 23 мая 2020

Firebaser здесь -

dSYM будут сгенерированы для всех двоичных файлов и фреймворков в вашем приложении, и они часто будут помечены как «обязательные» dSYM. Фреймворки, которые вы связываете в своем приложении, также будут генерировать dSYM, и они часто будут помечены как «необязательные». Итак, обязательные и необязательные dSYM поступают из разных библиотек, но в конечном итоге все они поступают от вашего приложения и любых фреймворков, которые вы связываете.

Если вы не загружаете дополнительные dSYM, поведение вы можете видеть (в большинстве случаев), что в некоторых из ваших сбоев не будут обозначены некоторые из стековых фреймов; скорее всего, в этих случаях ваше приложение запускало один или два метода фреймворка, связанного с вашим приложением, и вы часто будете видеть его окруженным символическими стековыми фреймами из других библиотек. Но в большинстве случаев необязательные dSYM не так важны для загрузки в Crashlytics.

Crashlytics не позволит получать отчеты cra sh на вашу панель управления до тех пор, пока не появятся «необходимые» отсутствующие dSYM, связанные с ними. Cra sh отчет загружен. После загрузки сбои будут обработаны и появятся на вашей панели инструментов. Если отсутствуют только дополнительные dSYM, эти сбои не не будут отображаться на вашей панели управления.

Наконец, с точки зрения поиска и загрузки ваших dSYM, я рекомендую начать здесь: https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports?platform=ios. Вы можете использовать такие инструменты, как dwarfdump -u </path/to/dSYMs>, чтобы проверить, совпадают ли загруженные вами dSYM с UUID отсутствующих dSYM на вашей панели управления.

1 голос
/ 06 мая 2020

DSyms - это iOS -артефакты, которые создаются вместе с IPA (также известные как файлы сборки). Они не являются необходимыми для запуска приложения, но могут использоваться для Crashlytics (как Fabri c, так и Firebase), чтобы предоставить дополнительную информацию о сбоях.

...