Reputation: 3160
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 :(
Upvotes: 6
Views: 9183
Reputation: 618
For problme 1, I fix my crash problem with add below code in build.gradle
.
The build.gradle
in project level:
buildscript {
...
}
dependencies {
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.6.1'
...
}
}
The build.gradle
in app level:
apply plugin: 'com.google.firebase.crashlytics' // Apply the Crashlytics Gradle plugin
...
dependencies {
// Declare the dependencies for the Crashlytics and Analytics libraries
// When using the BoM, you don't specify versions in Firebase library dependencies
implementation 'com.google.firebase:firebase-crashlytics'
// Import the Firebase BoM
implementation platform('com.google.firebase:firebase-bom:26.8.0')
...
}
Upvotes: 0
Reputation: 8315
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
Upvotes: 4
Reputation: 701
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
.
Upvotes: 13