#android #firebase #crashlytics #google-fabric
#Android #firebase #crashlytics #google-fabric
Вопрос:
Я пытаюсь добавить Firebase Crashlytics в новое приложение для Android (один модуль, без вариантов). Поскольку Crashlytics отсутствует в плагине IDE assistant, я использую шаги настройки изhttps://firebase.google.com/docs/crashlytics/get-started:
- добавление зависимостей gradle
- загрузите google-services.json и поместите его в / app root
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 console), но теперь я получаю
Проблема № 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. Вы решили это? У меня та же ошибка
2. Нет: (Я думаю, что введение отдельных классов приложений для типов сборки debug и release (с конфигурацией crashlytics только в release) должно устранить проблему, но я еще не пробовал это
Ответ №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.
at android.app.ActivityThread.installProvider(ActivityThread.java:6288)
В моем случае это было потому, что я забыл добавить apply plugin: 'io.fabric'
в /app/build.gradle
Я сделал все в точном соответствии с инструкциями, и мое приложение смогло отправлять отчеты в Crashlytics. И я не добавлял io.fabric.ApiKey
.
Комментарии:
1. вы можете запустить
gradle test
?2. @MykhailoGaidai, да. СБОРКА ВЫПОЛНЕНА УСПЕШНО. Нужно отметить, что у меня есть
applicationIdSuffix ".debug"
в моем проекте для сборки отладки. Итак, я также добавил приложениеcom.myapp.debug
в firebase console (в том же проекте) и вgoogle-services.json
вclient
массиве. Сначала был толькоcom.myapp
. Я пытаюсь настроить получение ошибок в отладочной сборке.3. @AnatolySamoylenko
apply plugin: 'io.fabric'
в/app/build.gradle
добавление сработало для меня
Ответ №2:
Ну, в моем случае:
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.0.0-beta01'
отсутствовал на уровне проекта build.gradle
и
apply plugin: 'com.google.firebase.crashlytics'
отсутствовал в build.gradle
файле на уровне приложения
Ответ №3:
Для проблемы 1 я исправляю свою проблему с сбоем, добавив приведенный ниже код в build.gradle
.
build.gradle
На уровне проекта:
buildscript {
...
}
dependencies {
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.6.1'
...
}
}
build.gradle
На уровне приложения:
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')
...
}