feat(crashlytics): report release crashes to Firebase Crashlytics
Routes Flutter framework errors (FlutterError.onError) and uncaught async/platform errors (PlatformDispatcher.onError) to Crashlytics, but only in release builds — debug keeps its red error screens and console traces, and collection is disabled via setCrashlyticsCollectionEnabled (kReleaseMode) so development crashes never reach the dashboard. Adds the Crashlytics Gradle plugin alongside the existing google-services FlutterFire config. iOS dSYM upload run script still to be added in Xcode (symbolication only; crash capture works without it). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,7 @@ import 'dart:io';
|
||||
|
||||
import 'package:firebase_analytics/firebase_analytics.dart';
|
||||
import 'package:firebase_core/firebase_core.dart';
|
||||
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
@@ -43,6 +44,21 @@ Future<void> main() async {
|
||||
analytics = AnalyticsService(
|
||||
kReleaseMode ? FirebaseAnalyticsBackend() : DebugAnalyticsBackend(),
|
||||
);
|
||||
|
||||
// Crashlytics: collect from release builds only (so debug keeps its red
|
||||
// error screens and console traces, and development crashes never reach
|
||||
// the production dashboard). In release, route both Flutter framework
|
||||
// errors and uncaught async/platform errors to Crashlytics.
|
||||
await FirebaseCrashlytics.instance
|
||||
.setCrashlyticsCollectionEnabled(kReleaseMode);
|
||||
if (kReleaseMode) {
|
||||
FlutterError.onError =
|
||||
FirebaseCrashlytics.instance.recordFlutterFatalError;
|
||||
PlatformDispatcher.instance.onError = (error, stack) {
|
||||
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
|
||||
return true;
|
||||
};
|
||||
}
|
||||
} catch (e) {
|
||||
debugPrint('Firebase init failed, analytics disabled: $e');
|
||||
analytics = AnalyticsService(DebugAnalyticsBackend());
|
||||
|
||||
Reference in New Issue
Block a user