Загрузить файлы символов

На странице Firebase Crash Reporting я не могу найти полную информацию о сбоях (например, номер строки, файл и т. Д.) . Я думал, что это может быть, потому что это говорит

Загрузите файл символов, чтобы обозначить будущие трассировки стека для UUID ---- ***

говорит мне

Используя командную строку, перейдите в папку проекта Xcode и запустите следующее:./Pods/FirebaseCrash/batch-upload ---- ***

К сожалению, когда я пытаюсь выполнить эту команду в моем проекте XCode, я получаю следующее сообщение:

---- ***: предупреждение: нет исполняемого файла или пакета Готово.

и ничего не меняется в базе огня. Может быть, это из-за включенного биткода? Как я могу решить это?

PS: я заменил свой UUID на ---- *** по соображениям безопасности.

3 ответа

Решение

Этот ответ, если вы не используете CocoaPods.

Если вы не используете CocoaPods, вам потребуются некоторые файлы из каталога Pods, которые не включены в стандартный набор предоставляемых ими библиотек Firebase.

Есть 5 файлов, изображенных ниже: FirebaseCrash необходимые файлы

Тебе понадобится batch-upload, dump_syms, upload-sym, upload-sym-util.bash а также upload-sym.sh, Вы можете получить эти файлы из файлов FirebaseCrash Pod.

Если вы скопируете их в каталог вашего проекта и замените "${PODS_ROOT}"/FirebaseCrash/ с каталогом, указывающим на эти файлы, он должен работать.

Примечание: у меня все еще есть сложности с этим решением, если я использую сервер сборки, такой как Jenkins. Там еще есть над чем поработать.


Я обнаружил, что это требуется для моих приложений, которые не используют CocoaPods. Хотя это может не иметь непосредственного отношения к вашему собственному использованию, я полагаю, что, по крайней мере, мне следует включить его для кого-то другого, пытающегося найти ответ.

В настоящее время у нас есть некоторые проблемы со сторонними разделяемыми библиотеками (динамическими структурами), поэтому, если вы используете разделяемую библиотеку, все становится сложнее. Следуйте приведенным ниже инструкциям, но замените путь к исполняемому файлу приложения на путь к общей библиотеке.

Если нет, то возможно, что исходный исполняемый файл, о котором сообщалось о сбое, был утерян. Даже если он перестроен с теми же источниками, поле LC_UUID изменится.

  1. Убедитесь, что UUID правильный для исполняемого файла:

     dwarfdump --uuid / path / to / your / build / area / MyApp .app / MyApp 

    Если ни один из UUID не совпадает с отсутствующим, игра окончена. Сожалею. Вы можете попытаться восстановить исполняемый файл из Time Machine, Carbonite или чего-то еще, но это все.

  2. Если один из UUID совпадает (есть один для каждой архитектуры), то у вас все еще есть исходный исполняемый файл, но вы, скорее всего, пропускаете пакет dSYM. Вы можете убедиться, что dSYM отсутствует:

     mdfind com_apple_xcode_dsym_uuids = UUID 

    Вы не должны видеть ответ.

  3. Восстановите комплект dSYM:

     dsymutil -o = upload.dSYM / path / to / your / build / area / MyApp .app / MyApp 
  4. Убедитесь, что пакет dSYM зарегистрирован:

     mdfind com_apple_xcode_dsym_uuids = UUID 

    Вы должны получить один ответ: upload.dSYM Вы только что создали.

    Если вы этого не видите, подождите несколько секунд и попробуйте снова.

  5. Бежать batch-upload UUID снова.

  6. Если это все еще не работает, вы можете получить частичные результаты, обработав сам исполняемый файл. Бежать batch-upload /path/to/your/build/area/MyApp.app/MyApp получить частичную символику.

В моем случае (БЕЗ КАКАОПОДОВ):

1) Импортировать все файлы из каталога "Crash"



2) Добавьте скрипт во вкладку "Build Phases" следующим образом:

# Replace this with the GOOGLE_APP_ID from your GoogleService-Info.plist file
GOOGLE_APP_ID=1:xxxxxxxxxxxx:ios:xxxxxxxxxxxx

# Replace the /Path/To/ServiceAccount.json with the path to the key you just downloaded
"${SRCROOT}"/upload-sym "${SRCROOT}/*NameOfTargetDirectory*/ServiceAccount.json"



Вам нужно изменить "NameOfTargetDirectory" в скрипте, и это работает!

Другие вопросы по тегам