Загрузить файлы символов
На странице Firebase Crash Reporting я не могу найти полную информацию о сбоях (например, номер строки, файл и т. Д.) . Я думал, что это может быть, потому что это говорит
Загрузите файл символов, чтобы обозначить будущие трассировки стека для UUID ---- ***
говорит мне
Используя командную строку, перейдите в папку проекта Xcode и запустите следующее:./Pods/FirebaseCrash/batch-upload ---- ***
К сожалению, когда я пытаюсь выполнить эту команду в моем проекте XCode, я получаю следующее сообщение:
---- ***: предупреждение: нет исполняемого файла или пакета Готово.
и ничего не меняется в базе огня. Может быть, это из-за включенного биткода? Как я могу решить это?
PS: я заменил свой UUID на ---- *** по соображениям безопасности.
3 ответа
Этот ответ, если вы не используете CocoaPods.
Если вы не используете CocoaPods, вам потребуются некоторые файлы из каталога Pods, которые не включены в стандартный набор предоставляемых ими библиотек Firebase.
Есть 5 файлов, изображенных ниже:
Тебе понадобится batch-upload
, dump_syms
, upload-sym
, upload-sym-util.bash
а также upload-sym.sh
, Вы можете получить эти файлы из файлов FirebaseCrash Pod.
Если вы скопируете их в каталог вашего проекта и замените "${PODS_ROOT}"/FirebaseCrash/
с каталогом, указывающим на эти файлы, он должен работать.
Примечание: у меня все еще есть сложности с этим решением, если я использую сервер сборки, такой как Jenkins. Там еще есть над чем поработать.
Я обнаружил, что это требуется для моих приложений, которые не используют CocoaPods. Хотя это может не иметь непосредственного отношения к вашему собственному использованию, я полагаю, что, по крайней мере, мне следует включить его для кого-то другого, пытающегося найти ответ.
В настоящее время у нас есть некоторые проблемы со сторонними разделяемыми библиотеками (динамическими структурами), поэтому, если вы используете разделяемую библиотеку, все становится сложнее. Следуйте приведенным ниже инструкциям, но замените путь к исполняемому файлу приложения на путь к общей библиотеке.
Если нет, то возможно, что исходный исполняемый файл, о котором сообщалось о сбое, был утерян. Даже если он перестроен с теми же источниками, поле LC_UUID изменится.
Убедитесь, что UUID правильный для исполняемого файла:
dwarfdump --uuid / path / to / your / build / area / MyApp .app / MyApp
Если ни один из UUID не совпадает с отсутствующим, игра окончена. Сожалею. Вы можете попытаться восстановить исполняемый файл из Time Machine, Carbonite или чего-то еще, но это все.
Если один из UUID совпадает (есть один для каждой архитектуры), то у вас все еще есть исходный исполняемый файл, но вы, скорее всего, пропускаете пакет dSYM. Вы можете убедиться, что dSYM отсутствует:
mdfind com_apple_xcode_dsym_uuids = UUID
Вы не должны видеть ответ.
Восстановите комплект dSYM:
dsymutil -o = upload.dSYM / path / to / your / build / area / MyApp .app / MyApp
Убедитесь, что пакет dSYM зарегистрирован:
mdfind com_apple_xcode_dsym_uuids = UUID
Вы должны получить один ответ:
upload.dSYM
Вы только что создали.Если вы этого не видите, подождите несколько секунд и попробуйте снова.
Бежать
batch-upload UUID
снова.Если это все еще не работает, вы можете получить частичные результаты, обработав сам исполняемый файл. Бежать
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" в скрипте, и это работает!