Загрузка dSYM-файлов на iOS

Информация о крэшах на iOS отправляется в десимволизированном виде. Из таких крэш‑логов сложно извлечь данные для анализа. Чтобы крэш-логи можно было анализировать, загрузите dSYM-файлы в AppMetrica.

Для загрузки dSYM-файлов в AppMetrica SDK включен инструмент командной строки helper. Для сборки с помощью fastlane поддержан плагин загрузки. С их помощью можно настроить автоматическую загрузку dSYM-файлов при сборке приложения.

Автоматическая загрузка при сборке

Если генерация Bitcode включена и вы используете fastlane для сборки приложения:

  1. Установите fastlane-плагин appmetrica:

    fastlane add_plugin appmetrica
    

    Подробнее о добавлении плагина в документации fastlane.

  2. Добавьте в файл fastlane/Fastfile следующее:

    lane :release do
    # Your actions before.
    gym(
    workspace: "MyApp.xcworkspace",
    configuration: "Release",
    scheme: "MyApp",
    export_method: "app-store"        # Pass the correct export_method.
    )
    upload_symbols_to_appmetrica(post_api_key: "Post API key")
    # Your actions after.
    end
    

    Post API key можно получить в разделе Настройки в AppMetrica. Он используется для идентификации вашего приложения.

    Внимание

    Для сборки приложения используется action gym с экспортом. Если вы собираете приложение с помощью Xcode, приложение будет перекомпилировано после загрузки в App Store Connect. Тогда сгенерированые при сборке dSYM-файлы нельзя будет использовать.

Если генерация Bitcode выключена

Если генерация Bitcode выключена и вы собираете приложение через Xcode, в Build Phases можно добавить этап загрузки dSYM-файлов с помощью инструмента helper.

Примечание

Инструмент helper включен в AppMetrica SDK, начиная с версии 3.8.0. Он находится в архиве SDK.

  1. Откройте проект в Xcode.

  2. В навигаторе по проекту выберите файл проекта.

  3. В блоке Targets выберите ваше приложение.

  4. Откройте вкладку Build Phases.

  5. Нажмите кнопку + → New Run Script Phase.

  6. В текстовое поле Type a script добавьте:

    if [ -d "${PODS_ROOT}/YandexMobileMetrica" ]; then
    HELPER_PATH=`find "${PODS_ROOT}/YandexMobileMetrica" -name "helper"`
    if [ -x  "${HELPER_PATH}" ]; then
    "${HELPER_PATH}" auto --post-api-key="Post API key"&
    else
    echo "AppMetrica crash helper was not found"
    fi
    fi
    

    Примечание

    Режим auto использует переменную окружения CONFIGURATION. Если сборка собирается с конфигурацией Debug, dSYM-файлы не загружаются.

    Справочник инструмента helper.

Загрузка отсутствующего dSYM-файла

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

Чтобы их символизировать, загрузите отсутствующие dSYM-файлы. Список отсутствующих файлов можно посмотреть на странице НастройкиКрэши вашего приложения в AppMetrica.

Отсутствующие dSYM-файлы можно загрузить:

  1. Установите fastlane-плагин appmetrica:

    fastlane add_plugin appmetrica
    

    Подробнее о добавлении плагина в документации fastlane.

  2. Добавьте в файл fastlane/Fastfile следующее:

    lane :refresh_dsyms do
    download_dsyms
    upload_symbols_to_appmetrica(post_api_key: "Post API key")
    clean_build_artifacts
    end
    

    В действии download_dsyms можно указать необходимую версию приложения и номер сборки:

    ...
    download_dsyms(version: "1.0.0", build_number: "345")
    ...
    

    Подробнее о действии download_dsyms в документации fastlane.

  1. Найдите необходимый архив с dSYM-файлом:

    Если генерация Bitcode включена

    Через Xcode Organizer
    1. В интерфейсе Xcode нажмите WindowOrganizer.
    2. Во вкладке Archives выберите нужную версию приложения.
    3. Нажмите кнопку Download dSYM.
    Через App Store Connect
    1. В интерфейсе iTunes Connect откройте страницу Activity.
    2. Во вкладке All Builds выберите нужный номер сборки.
    3. Нажмите Download dSYM.

    Если генерация Bitcode выключена

    Можно использовать dSYM-файл, который был сгенерирован при сборке.

  2. В интерфейсе AppMetrica перейдите в настройки приложения из меню слева.

  3. Откройте вкладку КрэшиiOS.

  4. Нажмите кнопку Выберите файл и загрузите ZIP-архив, содержащий директории app.dSYM или app.

Внимание

Данный вариант подходит только для приложений, которые собираются без Bitcode.

Для загрузки с помощью плагина необходимо подключить AppMetrica SDK не нижее версии 3.8.0. Чтобы загрузить в AppMetrica отсутствующие dSYM-файлы, в терминале выполните команду:

helper -k <post-api-key> <file_path>

file_path — список dSYM-файлов или папок, в которых они лежат.

Справочник инструмента helper.

Справочник инструмента helper

Примечание

Инструмент helper включен в AppMetrica SDK, начиная с версии 3.8.0. Он находится в архиве SDK.

Helper — инструмент командной строки, который позволяет загружать dSYM-файлы в AppMetrica.

$ helper [auto] [-o | --package-output-path=<path>] [-v | --verbose]
         [--version] -k <post-api-key> | --post-api-key=<key> [file ...]

Параметры

auto

Автоматический режим загрузки. В нем helper использует следующие переменные:

  • CONFIGURATION — используется для определения конфигурации. Если сборка собирается с конфигурацией Debug, dSYM-файлы не загружаются.
  • DWARF_DSYM_FOLDER_PATH — используется для нахождения dSYM-файлов. Она обычно зависит от переменной BUILT_PRODUCTS_DIR.
  • YMM_POST_API_KEYPost API key. Если указан, в автоматическом режиме можно использовать короткую команду helper auto&.

‑k

Post API key. Его можно получить в разделе Настройки в AppMetrica. Он используется для идентификации вашего приложения.

‑o

Путь к папке, в которой хранятся временные файлы.

По умолчанию используется системная папка.

‑v

Включает отображение дополнительной информации.

‑‑version

Выводит версию.

file

Список dSYM-файлов или папок, в которых они лежат.

По умолчанию используется локальная рабочая папка.

& позволяет запускать helper параллельно, не блокируя сборку всего проекта. Пример команды:

helper auto --post-api-key="Post API key"&

См. также

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

Написать в службу поддержки