Сообщения об ошибках и сбоях

Материал из Документация Ключ-АСТРОМ
Версия от 16:49, 19 августа 2026; IKuznetsov (обсуждение | вклад) (Новая страница: «= Сообщения об ошибках и сбоях = Мониторинг сбоев, ошибок '''ANR''' и других неполадок имеет решающее значение для обеспечения бесперебойной работы приложения. Эти проблемы могут привести к удалению приложения, негативным отзывам и потере доверия пользов...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Сообщения об ошибках и сбоях

Мониторинг сбоев, ошибок ANR и других неполадок имеет решающее значение для обеспечения бесперебойной работы приложения. Эти проблемы могут привести к удалению приложения, негативным отзывам и потере доверия пользователей. Проактивное обнаружение и устранение этих ошибок позволяет разработчикам повысить стабильность приложения и сохранить вовлеченность пользователей. Ключ-АСТРОМ предоставляет подробную информацию об этих ошибках, включая трассировку стека, сведения о сеансах и информацию, специфичную для устройства, что позволяет быстро выявлять первопричины и внедрять исправления.

Автоматическая система отчетности о сбоях

ЕдиныйАгент перехватывает все необработанные исключения. Отчет о сбое включает время возникновения и полную трассировку стека исключения.

Как правило, информация о сбое отправляется сразу после его возникновения, поэтому пользователю не нужно перезапускать приложение. Однако в некоторых случаях приложение следует открыть повторно в течение 10 минут, чтобы отчет о сбое был отправлен. Обратите внимание, что Ключ-АСТРОМ не отправляет отчеты о сбоях, которым более 10 минут (поскольку такие отчеты больше не могут быть сопоставлены в кластере Ключ-АСТРОМ).

Вы можете отключить отправку отчетов об ошибках с помощью соответствующего свойства crashReporting.

Настройка через Groovy DSL

astromkey {
    configurations {
        sampleConfig {
            crashReporting false
        }
    }
}

Настройка через Kotlin DSL

configure<com.astromkey.tools.android.dsl.AstromkeyExtension> {
    configurations {
        create("sampleConfig") {
            crashReporting(false)
        }
    }
}

ANR

ЕдиныйАгент сообщает об ошибках ANR только на устройствах с Android 11 и выше. На более старых версиях Android событие ошибки ANR недоступно.

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

С помощью RUM Ключ-АСТРОМ автоматически фиксирует ошибки «Приложение не отвечает» (ANR). Мониторинг ошибок ANR крайне важен, поскольку они вызывают недовольство пользователя. Основная проблема заключается в том, что основной поток приложения, отвечающий за обновление пользовательского интерфейса, не может обрабатывать события ввода пользователя или отрисовывать изображение, что приводит к закрытию приложения. В официальной документации Android приведены примеры и способы диагностики этих ошибок.

По умолчанию эта функция включена. Чтобы отключить её, используйте следующие параметры конфигурации:

Отключение при ручном запуске агента

Kotlin

Astromkey.startup(this, AstromkeyConfigurationBuilder("<YourApplicationID>", "<ProvidedBeaconUrl>")
    .withAnrReporting(false)
    .buildConfiguration()
)

Java

Astromkey.startup(this, new AstromkeyConfigurationBuilder("<YourApplicationID>", "<ProvidedBeaconUrl>")
    .withAnrReporting(false)
    .buildConfiguration()
);

Отключение через Gradle DSL

Groovy

astromkey {
    configurations {
        sampleConfig {
            anrReporting false
        }
    }
}

Kotlin

configure<com.astromkey.tools.android.dsl.AstromkeyExtension> {
    configurations {
        create("sampleConfig") {
            anrReporting(false)
        }
    }
}

Ограничения

  • Несколько ошибок ANR в одной сессии — в редких случаях может произойти несколько ошибок ANR до перезапуска приложения. Ключ-АСТРОМ будет отправлять отдельные события для каждой ошибки ANR, даже если они относятся к одной и той же сессии.
  • Неизвестные случаи ANR — в некоторых случаях ANR может отсутствовать четкая информация о типе или субъекте. Тем не менее, такие случаи сообщаются с учетом имеющейся информации.
  • Системные ограничения — качество данных ANR определяется операционной системой Android. Отсутствие трассировок стека или неполные данные о субъектах могут возникать из-за: перезаписи общего хранилища для трассировок, серьезных сбоев (например, повреждения памяти), поведения пользовательской прошивки.

Сбои нативных приложений

ЕдиныйАгент сообщает о сбоях нативных приложений только на устройствах с Android 11 или выше. На более старых версиях Android событие «Сбой нативного приложения» недоступно.

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

Сбои, вызванные нативными компонентами, — это сбои, возникающие в коде C/C++, добавленном через NDK. В официальной документации Android приведены примеры и способы их диагностики.

По умолчанию эта функция включена. Чтобы отключить её, используйте следующие параметры конфигурации:

Отключение при ручном запуске агента

Kotlin

Astromkey.startup(this, AstromkeyConfigurationBuilder("<YourApplicationID>", "<ProvidedBeaconUrl>")
    .withNativeCrashReporting(false)
    .buildConfiguration()
)

Java

Astromkey.startup(this, new AstromkeyConfigurationBuilder("<YourApplicationID>", "<ProvidedBeaconUrl>")
    .withNativeCrashReporting(false)
    .buildConfiguration()
);

Отключение через Gradle DSL

Groovy

astromkey {
    configurations {
        sampleConfig {
            nativeCrashReporting false
        }
    }
}

Kotlin

configure<com.astromkey.tools.android.dsl.AstromkeyExtension> {
    configurations {
        create("sampleConfig") {
            nativeCrashReporting(false)
        }
    }
}

Ограничения

  • Пустые трассировки стека — в некоторых случаях система Android может возвращать нулевую трассировку стека из-за перезаписанного общего хранилища, серьезных сбоев (например, поврежденной библиотеки libc) и поведения пользовательской прошивки.
  • Множественные сбои в течение одной сессии — если до перезапуска приложения происходит несколько сбоев в работе нативных приложений, Ключ-АСТРОМ отправит отдельные события для каждого сбоя.

Сообщение об ошибках вручную

Для ошибок, которые вы обрабатываете в своем коде, но которые все же хотите сообщать в Ключ-АСТРОМ, используйте API для ручного создания отчетов.

Используйте Astromkey.sendExceptionEvent(ExceptionEventData exceptionEventData) для сообщения об исключениях с полным контекстом и пользовательскими свойствами:

Kotlin

try {
    // код, который может вызвать исключение
} catch (exception: Exception) {
    Astromkey.sendExceptionEvent(
        ExceptionEventData(exception)
            .addEventProperty("event_properties.<YourPropertyName>", "<YourPropertyValue>")
    )
}

Java

try {
    // код, который может вызвать исключение
} catch (Exception exception) {
    Astromkey.sendExceptionEvent(
            new ExceptionEventData(exception)
                    .addEventProperty("event_properties.<YourPropertyName>", "<YourPropertyValue>")
    );
}