apptracer_flutter_android
Реализация apptracer_flutter под Android — неофициальной интеграции
Flutter с Tracer.
Не связан с VK и OK.TECH, не одобрен и не поддерживается ими.
English version: README.en.md.
Зависеть от этого пакета напрямую не нужно: его подтягивает
apptracer_flutter.
Что он делает
Передаёт ошибки Dart в ru.ok.tracer:tracer-crash-report. Нативные краши, ANR
и метрику crash-free этот SDK считает сам — плагин добавляет только ту
половину, которую SDK не видит.
Ошибка Dart заворачивается в синтетический Throwable, чей stackTrace
собран из кадров Dart. Если отдавать вместо этого стек JVM, у всех ошибок Dart
в приложении окажутся одинаковые кадры, и Tracer схлопнет их в одну проблему.
Подключение
SDK Tracer подключён здесь как compileOnly, поэтому его добавляет само
приложение — вместе с Gradle-плагином ru.ok.tracer, откуда берётся
appToken. См. README.
Настройку SDK пакет ставит себе сам, без строчки в манифесте: рейт-лимит на
нефатальные (10 в час вместо жёстких 8 за сессию — а каждая ошибка Dart здесь
нефатальная). Кладёт её TracerAutoConfigProvider, который система создаёт
раньше провайдера Tracer. Application, реализующий HasTracerConfiguration,
эту конфигурацию отменяет — на такой случай в пакете есть
TracerApplication, от которого наследуются. Почему так и чем это рискованно —
в TracerAutoConfig.
О четырёх вещах плагин скажет в рантайме, а не промолчит. Первые две его выключают:
- SDK Tracer отсутствует в classpath рантайма;
- Gradle-плагин
ru.ok.tracerне применён — определяется по отсутствию сгенерированного ресурсаtracer_app_token; - передан
TracerOptions.appToken— на Android он игнорируется; - передан
TracerOptions.environment— тоже игнорируется, значение берётся из Gradle-плагина.
Требует minSdk 21 — как и ru.ok.tracer:tracer-commons.
Libraries
- apptracer_flutter_android
- Android implementation of
apptracer_flutter.