Firebase Crashlytics is a lightweight, realtime crash reporter that helps helps you track, prioritize, and fix stability issues that erode your app quality. Crashlytics saves you troubleshooting time by intelligently grouping crashes and highlighting the circumstances that lead up to them.
Crashlytics is the new, primary crash reporter for Firebase. If your app uses Firebase Crash Reporting, there's good news: Crashlytics offers enhanced crash reporting with nearly the same setup process you're used to
Key capabilities are:
To get started, you need a Firebase app with Firebase Crashlytics enabled.
If you're using the latest version of Android Studio (version 2.2 or later), it's recommend using the Firebase Assistant to connect your app to Firebase. The Firebase Assistant can connect your existing project or create a new one for you and automatically install any necessary gradle dependencies.
To open the Firebase Assistant in Android Studio:
Following steps is nesessary to add the Crashlytics SDK to your project.
Add the Crashlytics repositories and dependency to your project-level build.gradle file:
buildscripts { repositories { // ... maven { url 'https://maven.fabric.io/public' } } dependencies { // ... classpath 'io.fabric.tools:gradle:1.25.1' } } allprojects { // ... repositories { // ... maven { url 'https://maven.google.com/' } } }
Add the Crashlytics dependencies to your app-level build.gradle:
apply plugin: 'com.android.application' apply plugin: 'io.fabric' dependencies { // ... compile 'com.google.android.gms:play-services:11.4.2' compile 'com.google.firebase:firebase-core:11.4.2' compile 'com.crashlytics.sdk.android:crashlytics:2.9.1' }
Once you've added the SDK to your app, Crashlytics automatically gets to work listening for and collecting crash reports.
Finally, enable Crashlytics in the Firebase console by clicking Set up Crashlytics.
To test Firebase Crashlytics add following snippet somewhere in your code
Crashlytics.getInstance().crash();
The report should appear in the Firebase console within five minutes.
To give yourself more context for the events leading up to a crash, you can add custom Crashlytics logs to your app. Crashlytics associates the logs with your crash data and makes them visible in the Firebase console.
Use Crashlytics.log
to help pinpoint issues. Crashlytics.log
can write logs to a crash report and with Log.println()
, or just to the next crash report.
Crash report and Log.println
:
Crashlytics.log(int priority, String tag, String msg);
Crash report only:
Crashlytics.log(msg);
You can even log handled exceptions which will help you in analyzing the application flow.
try { // some exception } catch (UnsupportedEncodingException e) { Log.e(TAG, "Exception: ", e); Crashlytics.logException(e); }
Custom keys
Crashlytics allows you to associate arbitrary key/value pairs with your crash reports, which are viewable right from the Crashlytics dashboard. Also resetting the same key updates the value. So where can we use this? Suppose you have a detail page which displays movie information and it crashes your app for a movie but you don’t know which one. That’s exactly where we can use custom keys so whenever you open this page first set custom key just like below.
Crashlytics.setString("movieId", "olBlOD2fOxQPHAuSx");
Remember resetting same key updates the value so you’ll get the name of recently opened movie in crashlytics dashboard. Below are other custom key methods.
void setBool(String key, boolean value); void setDouble(String key, double value); void setFloat(String key, float value); void setInt(String key, int value); void setString(String key, int value);
User Information
If you set below information in crashlytics then you can later search for users with given email or identifier in crashlytics dashboard. So if a user gives bad review or writes an angry mail to report a crash or something, you can check his email id in crashlytics and see for any issues.
void Crashlytics.setUserIdentifier(String identifier); void Crashlytics.setUserName(String name); void Crashlytics.setUserEmail(String email);