I'm trying to add Firebase Crashlytics to a new Android app (single module, no flavors). Since Crashlytics is missing from the IDE assistant plugin, I'm using setup steps from https://firebase.google.com/docs/crashlytics/get-started:
Crashlytics is initialized for release builds only like this:
class MyApplication: Application() {
fun onCreate() {
super.onCreate()
Fabric.with(
this,
Crashlytics.Builder()
.core(CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
.build()
)
}
}
The problem #1: app crashes during initialization with
java.lang.RuntimeException: Unable to get provider com.crashlytics.android.CrashlyticsInitProvider: io.fabric.sdk.android.services.concurrency.UnmetDependencyException: The Crashlytics build ID is missing. This occurs when Crashlytics tooling is absent from your app's build configuration. Please review Crashlytics onboarding instructions and ensure you have a valid Crashlytics account.
Adding
<meta-data
android:name="io.fabric.ApiKey"
android:value="{blah-blah-key}" />
to AndroidManifest.xml fixes the issue (I'm seeing crashes in firebase console), but now I'm getting
Problem #2: running unit tests (gradle test
) fails with
> Task :app:fabricGenerateResourcesRelease FAILED
ERROR - Crashlytics Developer Tools error.
java.lang.IllegalArgumentException: Crashlytics found an invalid API key: blah-blah-key
TL;DR - gradle fails to run unit tests if Fabric api key is present in manifest, app crashes in runtime if it's not present. I suspect that I'm doing something wrong, but not sure what exactly :(
Open your app from the home screen of your test device or simulator. In your app, press the "Test Crash" button that you added using the code above. After your app crashes, run it again from Xcode so that your app can send the crash report to Firebase.
To mark a cluster as closed, click the three dots on the far right of the row that appear when hovering over the row, then click "close cluster."
To opt out of automatic crash reporting, pass false as the override value. When set to false, the new value does not apply until the next run of the app. To disable the crash logs while in debug mode you must pass ! BuildConfig.
In addition to automatically reporting your app's crashes, Crashlytics lets you record non-fatal exceptions and sends them to you the next time your app launches. Note: Crashlytics only stores the most recent eight exceptions in a given app session.
I had a similar problem.
java.lang.RuntimeException: Unable to get provider com.crashlytics.android.CrashlyticsInitProvider: io.fabric.sdk.android.services.concurrency.UnmetDependencyException: The Crashlytics build ID is missing. This occurs when Crashlytics tooling is absent from your app's build configuration. Please review Crashlytics onboarding instructions and ensure you have a valid Crashlytics account.
at android.app.ActivityThread.installProvider(ActivityThread.java:6288)
In my case it was because I forgot to add apply plugin: 'io.fabric'
in /app/build.gradle
I did everything exactly according to the instructions and my application was able to send reports to Crashlytics. And I didn't add a io.fabric.ApiKey
.
Well in my case:
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.0.0-beta01'
was missing in project level build.gradle
and
apply plugin: 'com.google.firebase.crashlytics'
was missing in the app-level build.gradle
file
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With