AppMetrica снова доступна

Сбор данных продолжается, но некоторые отчёты и инструменты пока могут работать с ограничениями. Мы делаем всё возможное, чтобы вернуться в штатный режим. Спасибо, что вы с нами! Подробнее.

Крэши и ошибки

Этот раздел помогает понять, какие сбои мешают людям пользоваться приложением, и передать команде разработки информацию для исправления.

Чем крэш отличается от ошибки

Крэш — аварийное завершение приложения. Например, пользователь открывает карточку товара, а приложение неожиданно закрывается.

Ошибка — проблема, при которой приложение может продолжить работу. Например, карточка товара не загрузилась, но пользователь может вернуться в каталог. Такая информация появится в AppMetrica, если разработчик настроил отправку сообщения о ней.

Это примеры: какие ошибки отслеживать, команда определяет с учетом задач приложения.

Как начать сбор

Попросите разработчика проверить сбор крэшей и настройте вместе с ним отправку важных для продукта ошибок. Со своей стороны опишите ситуации, которые нужно отслеживать: что пытается сделать пользователь, что идет не так и как это мешает завершить действие.

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

Как получить понятное описание сбоя

Иногда приложение передает сообщение о сбое, в котором не видно, где именно возникла проблема. Чтобы AppMetrica могла расшифровать такое сообщение, разработчик загружает специальные файлы, подготовленные вместе с приложением. Они помогают найти место ошибки и разобраться в ее причине.

Для Android и iOS нужны разные файлы, но задача одна: сделать сведения о сбое пригодными для расследования. Аналитику или продуктологу не нужно готовить эти файлы самостоятельно.

Важно

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

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

Для разработчика: сбор крэшей и ошибок, отладочные файлы и проверка

Скачать инструкцию для разработчика (TXT): crashes-developer-ru.txt

Как настроить сбор

Сбор крэшей предусмотрен в AppMetrica SDK. Проверьте интеграцию для вашей платформы и настройки передачи. Для собственных сообщений об ошибках разработчик добавляет вызов соответствующего метода SDK.

Например, если приложение обработало неудачную операцию и показало пользователю сообщение, разработчик может передать ошибку для последующего анализа. Какие ситуации отправлять, определяет команда приложения.

Ссылки на методы Android, iOS, Flutter, React Native и Unity приведены в инструкции по отправке ошибок.

Файлы для расшифровки сбоев на Android и iOS

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

Android: mapping-файлы и отладочные символы

AppMetrica позволяет собирать информацию о нативных и java-крэшах. Их можно анализировать в отчете Крэши и ошибки. См. также раздел Отправка ошибок на разных платформах.

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

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

Для этого загрузите mapping-файлы или отладочные символы SO-файлов в AppMetrica: автоматически при сборке приложения или вручную через веб-интерфейс.

Чтобы отправлять файлы, подключите AppMetrica Gradle Plugin.

Примечание

Загружайте mapping-файлы, если вы используете ProGuard или R8. Если вы не сжимаете и не обфусцируете код, не подключайте плагин.

Узнать больше
iOS: dSYM-файлы

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

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

Пожалуйста, отправляйте dSYM файлы только для тех приложений, которые вы хотите опубликовать.

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

Используйте 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-файлы нельзя будет использовать.

  3. Добавьте этап загрузки dSYM-файлов с помощью инструмента helper в Xcode. Инструмент helper включен в AppMetrica SDK, начиная с версии 3.8.0. Он находится в архиве SDK. Справочник инструмента helper.

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

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

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

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

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

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

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

    Примечание

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

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

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

предупреждение

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

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

  • С помощью fastlane
  • Через веб-интерфейс
  • С помощью helper
С помощью fastlane
  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-файлом:

    Через Xcode Organizer
    1. В интерфейсе Xcode нажмите Window → Organizer.
    2. Во вкладке Archives выберите нужную версию приложения.
    3. Нажмите кнопку Download dSYM.

    Иллюстрация

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

    Иллюстрация

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

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

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

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

С помощью helper

Для загрузки с помощью плагина необходимо подключить 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. AMA_POST_API_KEY — Post API key. Если указан, в автоматическом режиме можно использовать короткую команду helper auto&.

-k

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

-o

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

-v

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

--version

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

file

Список dSYM-файлов или папок, в которых они лежат. По умолчанию используется локальная рабочая папка.

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

helper auto --post-api-key="Post API key"&
Узнать больше

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

Как проверить результат

  1. В тестовом окружении воспроизведите контролируемую ошибку или сбой.
  2. Откройте отчет Крэши и ошибки и найдите данные тестовой версии приложения.
  3. Проверьте сообщение, устройство и стек вызовов — последовательность функций, связанных со сбоем.
  4. Если стек не читается, проверьте наличие отладочных файлов именно для этой сборки.

Крэши объединяются в группы по стеку вызовов; группировка ошибок зависит от метода отправки. Подробности — в документации по крэшам и ошибкам.

Отправка ошибок на разных платформах

Как работать с отчетом

  1. Выберите период. Откройте отчет Крэши и ошибки. Например, после выпуска новой версии посмотрите период с момента ее выхода.
  2. Оцените масштаб. Сравните количество сбоев и число устройств, на которых они произошли. Частые сбои на одном устройстве и проблема, затронувшая много устройств, требуют разной оценки.
  3. Найдите условия возникновения. Посмотрите версии приложения, операционные системы и устройства. Откройте нужную группу — в ней собраны связанные случаи сбоя.
  4. Изучите действия перед сбоем. Откройте запись конкретного случая и нажмите «Посмотреть события сессии». История поможет восстановить действия пользователя, если соответствующие события собирались.
  5. Передайте проблему разработчику. Укажите версию приложения, масштаб проблемы и известные шаги пользователя. Ссылку на задачу можно добавить в комментарий к группе.

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

Как проверить исправление

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

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

Чтобы узнавать о проблемах по почте, настройте уведомления по email.

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

Написать в службу поддержки Предложить улучшение для документации
Написать в Telegram Написать в MAX