Добавление Firebase Crashlytics приводит либо к сбою во время выполнения, либо к сбою сборки модульного теста - PullRequest
3 голосов
/ 06 марта 2019

Я пытаюсь добавить Firebase Crashlytics в новое приложение для Android (один модуль, без вариантов).Поскольку Crashlytics отсутствует в плагине помощника IDE, я использую шаги настройки из https://firebase.google.com/docs/crashlytics/get-started:

  • , добавьте зависимости gradle
  • , загрузите google-services.json и поместите его в /корень приложения

Crashlytics инициализируется только для сборок релиза следующим образом:

class MyApplication: Application() {

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

Проблема # 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.

Добавление

<meta-data
  android:name="io.fabric.ApiKey"
  android:value="{blah-blah-key}" />

в AndroidManifest.xml устраняет проблему (я вижу сбои в консоли Firebase), но теперь я получаю

Problem #2 : выполнение модульных тестов (gradle test) завершается с ошибкой

> Task :app:fabricGenerateResourcesRelease FAILED
ERROR - Crashlytics Developer Tools error.
java.lang.IllegalArgumentException: Crashlytics found an invalid API key: blah-blah-key

TL; DR - gradle не запускает модульные тесты, если в манифесте присутствует ключ API-интерфейса Fabric, если приложение не работает, во время выполнения происходит сбойподарок.Я подозреваю, что я делаю что-то не так, но не уверен, что именно :(

1 Ответ

4 голосов
/ 05 апреля 2019

У меня была похожая проблема.

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)

В моем случае это было потому, что я забыл добавить apply plugin: 'io.fabric' в /app/build.gradle

Я сделал все точно в соответствии с инструкция и мое приложение смогло отправлять отчеты в Crashlytics.И я не добавил io.fabric.ApiKey.

...