1
0
mirror of git://f0xx.org/android_cast synced 2026-07-29 07:20:00 +03:00
Files
android_cast/docs/CRASH_REPORTER.md
Anton Afanasyeu ef36f91b82 next/side sync
2026-05-26 13:14:14 +02:00

1.8 KiB

Anonymous crash reporter

Android

  • Main process: CrashReporter.install() — any uncaught Java exception (cast or idle UI) → files/crash_reports/pending/crash_yyyyMMdd_HHmmss.json (same stamp as session_*.json). Active cast session stats are flushed with globals.reason: "crash" when applicable.
  • Runtime context: every report includes runtime_context (foreground activity, CastActiveState, last session_*.json name) and scenario (cast_session vs app_runtime).
  • Watcher process: CrashWatcherService in :crashwatcher — reads settings.jsoncrash, uploads pending reports, ingests native stub files.
  • Native: crash_hook.c (unwind + dladdr) writes stubs to crash_reports/native/; watcher converts to schema v1 JSON.
  • User toggle: Settings drawer → Send anonymous crash logs (AppPreferences.send_anonymous_crash_logs, default on).

Deploy tuning via app-private files/settings.json (see examples/settings.json):

"crash": {
  "enabled": "true",
  "upload_url": "https://f0xx.org/app/androidcast_project/crashes/api/upload.php",
  "prune_after_upload": "true",
  "upload_interval": "5m",
  "max_pending": 32
}

Backend

PHP console and ingest API: examples/crash_reporter/backend/ — see README.
Production nginx/hosts: INFRA.md.

Roadmap: examples/crash_reporter/ROADMAP.md.

Report files

Pattern Example
Pending crash JSON crash_20260520_153045.json
Session stats (compare) session_send_20260520_120000.json

JSON fields: schema_version, report_id, report_file, generated_at_epoch_ms, scenario, runtime_context, optional session_context, java / native, device, app, build, fingerprint.