添加Firebase Crashlytics在运行时崩溃或单元测试构建失败

Myk*_*dai 5 android firebase crashlytics google-fabric

我正在尝试将Firebase Crashlytics添加到新的Android应用程序(单个模块,没有口味)。由于IDE助手插件中缺少Crashlytics,因此我使用https://firebase.google.com/docs/crashlytics/get-started中的设置步骤:

  • 添加gradle依赖
  • 下载google-services.json并将其放在/ app根目录中

Crashlytics仅针对发布版本进行初始化,如下所示:

class MyApplication: Application() {

  fun onCreate() {
    super.onCreate()
    Fabric.with(
        this,
        Crashlytics.Builder()
            .core(CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
            .build()
    )
  }
}
Run Code Online (Sandbox Code Playgroud)

问题#1:应用在初始化期间崩溃

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.
Run Code Online (Sandbox Code Playgroud)

新增中

<meta-data
  android:name="io.fabric.ApiKey"
  android:value="{blah-blah-key}" />
Run Code Online (Sandbox Code Playgroud)

到AndroidManifest.xml修复了该问题(我在Firebase控制台中看到崩溃),但是现在我得到了

问题2:运行单元测试(gradle test)失败,

> Task :app:fabricGenerateResourcesRelease FAILED
ERROR - Crashlytics Developer Tools error.
java.lang.IllegalArgumentException: Crashlytics found an invalid API key: blah-blah-key
Run Code Online (Sandbox Code Playgroud)

TL; DR-如果清单中包含Fabric api密钥,则gradle无法运行单元测试,如果不存在,则应用程序将在运行时崩溃。我怀疑我做错了什么,但不确定到底是什么:(

Ana*_*nko 11

我有一个类似的问题。

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)
Run Code Online (Sandbox Code Playgroud)

在我的情况,那是因为我忘了加apply plugin: 'io.fabric'/app/build.gradle

我完全按照说明进行了所有操作,并且我的应用程序能够将报告发送到Crashlytics。而且我没有添加io.fabric.ApiKey