FirebaseCrashlytics

public class FirebaseCrashlytics


The Firebase Crashlytics API provides methods to annotate and manage fatal crashes, non-fatal errors, and ANRs captured and reported to Firebase Crashlytics.

By default, Firebase Crashlytics is automatically initialized.

Call getInstance to get the singleton instance of FirebaseCrashlytics.

Summary

Public methods

@NonNull Task<Boolean>

Checks a device for any fatal crash, non-fatal error, or ANR reports that haven't yet been sent to Crashlytics.

void

If automatic data collection is disabled, this method queues up all the reports on a device for deletion.

boolean

Checks whether the app crashed on its previous run.

static @NonNull FirebaseCrashlytics

Gets the singleton FirebaseCrashlytics instance.

boolean

Indicates whether or not automatic data collection is enabled.

void
log(@NonNull String message)

Logs a message that's included in the next fatal, non-fatal, or ANR report.

void

Records a non-fatal report to send to Crashlytics.

void

If automatic data collection is disabled, this method queues up all the reports on a device to send to Crashlytics.

void

Enables or disables the automatic data collection configuration for Crashlytics.

void

Enables or disables the automatic data collection configuration for Crashlytics.

void

Sets a custom key and value that are associated with subsequent fatal, non-fatal, and ANR reports.

void
setCustomKey(@NonNull String key, boolean value)

Sets a custom key and value that are associated with subsequent fatal, non-fatal, and ANR reports.

void
setCustomKey(@NonNull String key, double value)

Sets a custom key and value that are associated with subsequent fatal and non-fatal reports.

void
setCustomKey(@NonNull String key, float value)

Sets a custom key and value that are associated with subsequent fatal, non-fatal, and ANR reports.

void
setCustomKey(@NonNull String key, int value)

Sets a custom key and value that are associated with subsequent fatal, non-fatal, and ANR reports.

void
setCustomKey(@NonNull String key, long value)

Records a custom key and value to be associated with subsequent fatal, non-fatal, and ANR reports.

void

Sets multiple custom keys and values that are associated with subsequent fatal, non-fatal, and ANR reports.

void
setUserId(@NonNull String identifier)

Records a user ID (identifier) that's associated with subsequent fatal, non-fatal, and ANR reports.

Extension functions

final void

Associates all key-value parameters with the reports

final void

This method is deprecated. Migrate to use the KTX API from the main module: https://firebase.google.com/docs/android/kotlin-migration.

Public methods

checkForUnsentReports

public @NonNull Task<BooleancheckForUnsentReports()

Checks a device for any fatal crash, non-fatal error, or ANR reports that haven't yet been sent to Crashlytics. If automatic data collection is enabled, then reports are uploaded automatically and this always returns false. If automatic data collection is disabled, this method can be used to check whether the user opts-in to send crash reports from their device.

Returns
@NonNull Task<Boolean>

a Task that is resolved with the result.

deleteUnsentReports

public void deleteUnsentReports()

If automatic data collection is disabled, this method queues up all the reports on a device for deletion. Otherwise, this method is a no-op.

didCrashOnPreviousExecution

public boolean didCrashOnPreviousExecution()

Checks whether the app crashed on its previous run.

Returns
boolean

true if a crash was recorded during the previous run of the app.

getInstance

public static @NonNull FirebaseCrashlytics getInstance()

Gets the singleton FirebaseCrashlytics instance.

The default FirebaseApp instance must be initialized before this function is called. See FirebaseApp for more information.

isCrashlyticsCollectionEnabled

public boolean isCrashlyticsCollectionEnabled()

Indicates whether or not automatic data collection is enabled.

Returns
boolean

In order of priority:

log

public void log(@NonNull String message)

Logs a message that's included in the next fatal, non-fatal, or ANR report.

Logs are visible in the session view on the Firebase Crashlytics console.

Newline characters are stripped and extremely long messages are truncated. The maximum log size is 64k. If exceeded, the log rolls such that messages are removed, starting from the oldest.

Parameters
@NonNull String message

the message to be logged

recordException

public void recordException(@NonNull Throwable throwable)

Records a non-fatal report to send to Crashlytics.

Parameters
@NonNull Throwable throwable

a Throwable to be recorded as a non-fatal event.

sendUnsentReports

public void sendUnsentReports()

If automatic data collection is disabled, this method queues up all the reports on a device to send to Crashlytics. Otherwise, this method is a no-op.

setCrashlyticsCollectionEnabled

public void setCrashlyticsCollectionEnabled(@Nullable Boolean enabled)

Enables or disables the automatic data collection configuration for Crashlytics.

If this is set, it overrides any automatic data collection settings configured in the AndroidManifest.xml as well as any Firebase-wide settings. If set to null, the override is cleared.

If automatic data collection is disabled for Crashlytics, crash reports are stored on the device. To check for reports, use the checkForUnsentReports method. Use sendUnsentReports to upload existing reports even when automatic data collection is disabled. Use deleteUnsentReports to delete any reports stored on the device without sending them to Crashlytics.

Parameters
@Nullable Boolean enabled

whether to enable or disable automatic data collection. When set to false, the new value does not apply until the next run of the app. When set to null, the override is cleared and automatic data collection settings are determined by the configuration in your AndroidManifest.xml or other Firebase-wide settings.

setCrashlyticsCollectionEnabled

public void setCrashlyticsCollectionEnabled(boolean enabled)

Enables or disables the automatic data collection configuration for Crashlytics.

If this is set, it overrides any automatic data collection settings configured in the AndroidManifest.xml as well as any Firebase-wide settings.

If automatic data collection is disabled for Crashlytics, crash reports are stored on the device. To check for reports, use the checkForUnsentReports method. Use sendUnsentReports to upload existing reports even when automatic data collection is disabled. Use deleteUnsentReports to delete any reports stored on the device without sending them to Crashlytics.

Parameters
boolean enabled

whether to enable automatic data collection. When set to false, the new value does not apply until the next run of the app. To disable data collection by default for all app runs, add the firebase_crashlytics_collection_enabled flag to your app's AndroidManifest.xml.

setCustomKey

public void setCustomKey(@NonNull String key, @NonNull String value)

Sets a custom key and value that are associated with subsequent fatal, non-fatal, and ANR reports.

Multiple calls to this method with the same key update the value for that key.

The value of any key at the time of a fatal, non-fatal, or ANR event is associated with that event.

Keys and associated values are visible in the session view on the Firebase Crashlytics console.

Accepts a maximum of 64 key/value pairs. New keys beyond that limit are ignored. Keys or values that exceed 1024 characters are truncated.

Parameters
@NonNull String key

A unique key

@NonNull String value

A value to be associated with the given key

setCustomKey

public void setCustomKey(@NonNull String key, boolean value)

Sets a custom key and value that are associated with subsequent fatal, non-fatal, and ANR reports.

Multiple calls to this method with the same key update the value for that key.

The value of any key at the time of a fatal, non-fatal, or ANR event is associated with that event.

Keys and associated values are visible in the session view on the Firebase Crashlytics console.

Accepts a maximum of 64 key/value pairs. New keys beyond that limit are ignored. Keys or values that exceed 1024 characters are truncated.

Parameters
@NonNull String key

A unique key

boolean value

A value to be associated with the given key

setCustomKey

public void setCustomKey(@NonNull String key, double value)

Sets a custom key and value that are associated with subsequent fatal and non-fatal reports.

Multiple calls to this method with the same key update the value for that key.

The value of any key at the time of a fatal or non-fatal event is associated with that event.

Keys and associated values are visible in the session view on the Firebase Crashlytics console.

Accepts a maximum of 64 key/value pairs. New keys beyond that limit are ignored. Keys or values that exceed 1024 characters are truncated.

Parameters
@NonNull String key

A unique key

double value

A value to be associated with the given key

setCustomKey

public void setCustomKey(@NonNull String key, float value)

Sets a custom key and value that are associated with subsequent fatal, non-fatal, and ANR reports.

Multiple calls to this method with the same key update the value for that key.

The value of any key at the time of a fatal, non-fatal, or ANR event is associated with that event.

Keys and associated values are visible in the session view on the Firebase Crashlytics console.

Accepts a maximum of 64 key/value pairs. New keys beyond that limit are ignored. Keys or values that exceed 1024 characters are truncated.

Parameters
@NonNull String key

A unique key

float value

A value to be associated with the given key

setCustomKey

public void setCustomKey(@NonNull String key, int value)

Sets a custom key and value that are associated with subsequent fatal, non-fatal, and ANR reports.

Multiple calls to this method with the same key update the value for that key.

The value of any key at the time of a fatal, non-fatal, or ANR event is associated with that event.

Keys and associated values are visible in the session view on the Firebase Crashlytics console.

Accepts a maximum of 64 key/value pairs. New keys beyond that limit are ignored. Keys or values that exceed 1024 characters are truncated.

Parameters
@NonNull String key

A unique key

int value

A value to be associated with the given key

setCustomKey

public void setCustomKey(@NonNull String key, long value)

Records a custom key and value to be associated with subsequent fatal, non-fatal, and ANR reports.

Multiple calls to this method with the same key will update the value for that key.

The value of any key at the time of a fatal, non-fatal, or ANR event will be associated with that event.

Keys and associated values are visible in the session view on the Firebase Crashlytics console.

A maximum of 64 key/value pairs can be written, and new keys added beyond that limit will be ignored. Keys or values that exceed 1024 characters will be truncated.

Parameters
@NonNull String key

A unique key

long value

A value to be associated with the given key

setCustomKeys

public void setCustomKeys(@NonNull CustomKeysAndValues keysAndValues)

Sets multiple custom keys and values that are associated with subsequent fatal, non-fatal, and ANR reports. This method is intended as an alternative to setCustomKey in order to reduce the computational load of writing out multiple key/value pairs at the same time.

Multiple calls to this method with the same key update the value for that key.

The value of any key at the time of a fatal, non-fatal, or ANR event is associated with that event.

Keys and associated values are visible in the session view on the Firebase Crashlytics console.

Accepts a maximum of 64 key/value pairs. If calling this method results in the number of custom keys exceeding this limit, only some of the keys will be logged (however many are needed to get to 64). Which keys are logged versus dropped is unpredictable as there is no intrinsic sorting of keys. Keys or values that exceed 1024 characters are truncated.

Parameters
@NonNull CustomKeysAndValues keysAndValues

A dictionary of keys and the values to associate with each key

setUserId

public void setUserId(@NonNull String identifier)

Records a user ID (identifier) that's associated with subsequent fatal, non-fatal, and ANR reports.

The user ID is visible in the session view on the Firebase Crashlytics console.

Identifiers longer than 1024 characters will be truncated.

Parameters
@NonNull String identifier

a unique identifier for the current user

Extension functions

FirebaseCrashlyticsKt.setCustomKeys

public final void FirebaseCrashlyticsKt.setCustomKeys(
    @NonNull FirebaseCrashlytics receiver,
    @ExtensionFunctionType @NonNull Function1<@NonNull KeyValueBuilderUnit> init
)

Associates all key-value parameters with the reports

FirebaseCrashlyticsKt.setCustomKeys

public final void FirebaseCrashlyticsKt.setCustomKeys(
    @NonNull FirebaseCrashlytics receiver,
    @ExtensionFunctionType @NonNull Function1<@NonNull KeyValueBuilderUnit> init
)

Associates all key-value parameters with the reports

Deprecation Notice: The Kotlin extensions (KTX) APIs have been added to their respective main modules, and the Kotlin extension (KTX) APIs in com.google.firebase:firebase-crashlytics-ktx are now deprecated. As early as April 2024, we'll no longer release KTX modules. For details, see the FAQ about this initiative.