Как запустить символы загрузки для загрузки dSYM как часть процесса сборки XCode?

Итак, я пытаюсь автоматически загрузить dSYMs. Я следую инструкциям из этой официальной документации: https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports

Я застрял в разделе "Запустить скрипт загрузки символов вручную". Есть 3 способа загрузки dSYM. Я пытаюсь следовать первой, включая следующую строку в процессе сборки:find ${DWARF_DSYM_FOLDER_PATH} -name "*.dSYM" | xargs -I \{\} ${PODS_ROOT}/Fabric/upload-symbols -gsp MyProjectFolder/GoogleService-Info.plist -p ios \{\}

Сейчас я попробовал следующее:

  1. Я иду в проект-> Схема-> Редактировать схему.
  2. Я нажимаю на Build-> Опубликовать действия
  3. Я начинаю с малого - я хочу показать "эхо" в процессе сборки:dSYMs
  4. Я запускаю Product->Build
  5. Я иду в View->Navigators->Show Report Navigator
  6. Там нет признаков того, что эхо было выполнено.

Где поставить этот скрипт?

Как узнать, запускается он или нет?

1 ответ

TL; DR: dSYMS, сгенерированные во время сборки, больше не имеют значения в эру "битового кода включена", вам нужно загрузить dSYM из Apple и загрузить их в службу сторонних репортеров после завершения сборки после того, как Apple обработает вашу загрузку,

Фон

симптом

Отсутствует символ dSYM / сбой в сторонней консоли отчетов о сбоях. Я думал, что, несмотря на следующие инструкции по установке Crashlytics, скрипт не работает.

Биткод - фундаментальная проблема

Оказывается, что сторонние системы оповещения о сбоях (такие как Crashlytics или New Relic) имеют фундаментальную проблему с текущей практикой распространения приложений - приложения с поддержкой битового кода. Исторически эти сторонние системы отчетов о сбоях полагались на этапы времени сборки для загрузки сгенерированных dSYM времени сборки. Но поскольку поддержка битового кода означает, что магазин приложений перекомпилирует ваши приложения, ваши сгенерированные dSYM во время сборки, которые вы пытаетесь загрузить, фактически бесполезны.

В качестве фона, приложения с поддержкой битового кода "прореживаются" и, таким образом, компилируются Apple так, что каждое устройство получает только те биты загрузки, которые ему необходимы. Вы хотите включить битовый код. Это хорошая вещь. Но, распределение с битовым кодом портит символику. Независимо от того, какие dSYM вы генерируете во время сборки, на самом деле dSYM не будут коррелировать с вашими сбоями, так как ваши сбой будут происходить из перекомпилированных версий вашего приложения из магазина приложений с новыми соответствующими dSYM.

Так что не беспокойтесь о том, работает ли скрипт загрузки или нет во время сборки. Фактически, этот шаг должен быть удален из вашего процесса сборки, поскольку он просто тратит ваше время и пропускную способность.

Решения

Решение состоит в том, чтобы подождать "некоторое время" (как сообщается, несколько минут, через документацию NewRelic) после загрузки вашего приложения (вероятно, в течение времени, когда App Store сообщает, что ваша сборка "Обрабатывается"), затем загрузить оттуда dSYM и использовать свой третий сценарий загрузки партийной программы

Ручная загрузка / выгрузка

В настоящее время рекомендованные решения сторонних аварийных репортеров (по крайней мере, документации NewRelic и Crashlytics) - либо перейти на страницу App Store Connect для сборки и загрузить dSYM, а затем выгрузить, либо использовать XCode Organizer для архива, нажав "Download Debug". Символы ", а затем загрузить их.

Это действительно работает, с загрузками dSYM вручную, отправленными вашему поставщику отчетов о сбоях, вы получите символические отчеты. Это ручной процесс с использованием графического интерфейса Xcode или интерфейса App Store Connect.

Fastlane автоматизация

Вы можете автоматизировать процесс с помощью Fastlane, хотя я считаю, что это правильное решение.

https://docs.fastlane.tools/actions/download_dsyms/

https://docs.fastlane.tools/actions/upload_symbols_to_crashlytics/

Попробуйте следующие шаги:

Шаг 1: Выберите проект Xcode вашего приложения, затем цель вашего приложения, затем выберите "Фазы сборки".

Шаг 2: В меню XCode выберите "Редактор", затем выберите "Добавить этап сборки", а затем нажмите "Добавить этап создания сценария".

Шаг 3: Теперь вы должны увидеть раздел Run Script в опциях Build Phase.

Шаг 4: Вставьте скрипт в тело Фазы запуска Run Script.

Имейте в виду, чтобы правильно указать путь к файлу в ваших скриптах.

Требуется обновление в Project Target-> Build setting -> Debug Information (Отладка и выпуск обоих) -> DWARF с файлом dSYM

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