Flutter crashlytics integration

First, set up a Firebase project

Config firebase_crashlytics

https://pub.dev/packages/firebase_crashlytics

  • Update dependencies
dependencies:
  # firebase
  firebase_core: ^0.5.0
  firebase_crashlytics: ^0.2.1
  • Install it via pub get

Android integration

  • Update android/build.gradle
buildscript {
    ext.kotlin_version = '1.3.61'
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.3'
        classpath 'com.google.gms:google-services:4.3.4'
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.3.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}
  • Update android/app/build.gradle.
dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.google.firebase:firebase-analytics:17.5.0'
    implementation 'com.google.firebase:firebase-crashlytics:17.2.2'
}

apply plugin: 'com.google.firebase.crashlytics'
apply plugin: 'com.google.gms.google-services'

iOS integration

  • Open ios/Runner.xcworkspace
  • Select Runner from the project navigation
  • Select the Build Phases tab.
  • Click + Add a new build phase, and select New Run Script Phase.
  • Add command below to the Type a script... text box.
"${PODS_ROOT}/FirebaseCrashlytics/run"

Use the plugin

import 'dart:async';
import 'dart:isolate';

import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
import 'package:flutter/material.dart';
import 'package:nft/my_app.dart';

Future<void> main() async {

  /// WidgetsFlutterBinding
  WidgetsFlutterBinding.ensureInitialized();

  // Initializing FlutterFire
  await Firebase.initializeApp();
  
  // Initialize Crash report
  await FirebaseCrashlytics.instance
      .setCrashlyticsCollectionEnabled(true);
  
  // Pass all uncaught errors from the framework to Crashlytics.
  FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;

  // Errors outside of Flutter
  Isolate.current.addErrorListener(RawReceivePort((List<dynamic> pair) async {
    final List<dynamic> errorAndStacktrace = pair;
    await FirebaseCrashlytics.instance.recordError(
      errorAndStacktrace.first,
      errorAndStacktrace.last as StackTrace,
    );
  }).sendPort);

  // Zoned Errors
  runZonedGuarded<Future<void>>(() async {
    await myMain();
  }, FirebaseCrashlytics.instance.recordError);
}

To test crash, just create a new button and send test crashing

        FlatButton(
          onPressed: () {
            // Forcing a crash
            FirebaseCrashlytics.instance.crash();
          },
          child: const Text('Crash'),
        ),
  • Run the app and wait for Firebase collects data, it may take a few hours.
  • Open Firebase console, Quality -> Crashlytics

More example: https://firebase.flutter.dev/docs/crashlytics/usage

https://medium.com/p/17530e24ba5c

nhancv.com

upwork.com/fl/nhancv

Leave a Reply

Your email address will not be published.Required fields are marked *