For Flutter plugins for other Firebase products, see FlutterFire.md.
Note: This plugin is still under development, and some APIs might not be available yet. Feedback and Pull Requests are most welcome!
To use the firebase_crashlytics
plugin, follow the plugin installation instructions.
Enable the Google services by configuring the Gradle scripts as such:
[project]/android/build.gradle
file.repositories { google() jcenter() // Additional repository for fabric resources maven { url 'https://maven.fabric.io/public' } }
[project]/android/build.gradle
file.dependencies { // Example existing classpath classpath 'com.android.tools.build:gradle:3.2.1' // Add the google services classpath classpath 'com.google.gms:google-services:4.3.0' // Add fabric classpath classpath 'io.fabric.tools:gradle:1.26.1' }
[project]/android/app/build.gradle
file.// ADD THIS AT THE BOTTOM apply plugin: 'io.fabric' apply plugin: 'com.google.gms.google-services'
Note: If this section is not completed, you will get an error like this:
java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process [package name]. Make sure to call FirebaseApp.initializeApp(Context) first.
Note: When you are debugging on Android, use a device or AVD with Google Play services. Otherwise, you will not be able to use Firebase Crashlytics.
Add the Crashlytics run scripts:
Runner
from the project navigation.Build Phases
tab.+ Add a new build phase
, and select New Run Script Phase
.${PODS_ROOT}/Fabric/run
to the Type a script...
text box.Info.plist
, built by your app, to the Build Phase's Input Files
field.$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
Add the following imports to your Dart code:
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
Setup Crashlytics
:
void main() { // Set `enableInDevMode` to true to see reports while in debug mode // This is only to be used for confirming that reports are being // submitted as expected. It is not intended to be used for everyday // development. Crashlytics.instance.enableInDevMode = true; // Pass all uncaught errors from the framework to Crashlytics. FlutterError.onError = Crashlytics.instance.recordFlutterError; runApp(MyApp()); }
Overriding FlutterError.onError
with Crashlytics.instance.recordFlutterError
will automatically catch all errors that are thrown from within the Flutter framework.
If you want to catch errors that occur in runZoned
, you can supply Crashlytics.instance.recordError
to the onError
parameter:
runZoned<Future<void>>(() async { // ... }, onError: Crashlytics.instance.recordError);
If an error is caught, you should see the following messages in your logs:
flutter: Flutter error caught by Crashlytics plugin: // OR if you use recordError for runZoned: flutter: Error caught by Crashlytics plugin <recordError>: // Exception, context, information, and stack trace in debug mode // OR if not in debug mode: flutter: Error reported to Crashlytics.
Note: It may take awhile (up to 24 hours) before you will be able to see the logs appear in your Firebase console.
See the example application source for a complete sample app using firebase_crashlytics
.
Please file issues to send feedback or report a bug. Thank you!