Ткань Crashlytics с Firebase не может быть отключена для сборки DEBUG
У меня есть приложение, которое использует Crashlytics Fabric через Firebase. Первое, что было выполнено в моих приложениях onCreate
CrashlyticsCore crashlyticsCore = new CrashlyticsCore.Builder()
.disabled(BuildConfig.DEBUG)
.build();
Fabric.with(this, new Crashlytics.Builder().core(crashlyticsCore).build());
Тем не менее, сбои представлены в режиме DEBUG == true
.
Я использую следующие версии
в моем classpath "io.fabric.tools:gradle:1.25.1"
class classpath "io.fabric.tools:gradle:1.25.1"
в моей реализации app/build.gradle implementation "com.crashlytics.sdk.android:crashlytics:2.9.1"
К сожалению, аварии все еще сообщаются. Любые идеи, что я делаю неправильно?
Ответы
Ответ 1
В документации Firebase Crashlytics объясняется, что после включения отчетности в сеансе приложения ее нельзя отключить.
По умолчанию отчетность Crashlytics включена в ContentProvider
имени CrashlyticsInitProvider, который выполняется до вашего Application
создается экземпляр. CrashlyticsInitProvider включает или отключает отчеты на основе значения метаданных firebase_crashlytics_collection_enabled
, которое по умолчанию имеет значение true.
Если вы хотите, чтобы отчеты были отключены, важно, чтобы метаданные манифеста присутствовали и имели значение false:
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="false" />
Посмотрите в logcat во время инициализации приложения для сообщения:
CrashlyticsInitProvider: CrashlyticsInitProvider initialization successful
Если сообщение присутствует, firebase_crashlytics_collection_enabled
имеет значение true. Если сообщение отсутствует, вы успешно настроили метаданные для отключения отчетов о сбоях.
Если метаданные отсутствуют или имеют значение true, вы не можете отключить создание отчетов в своем коде с помощью вызова Fabric.with(...)
.
В комментарии к другому ответу вы указываете, что пытались отключить создание отчетов с использованием метаданных и не смогли это сделать. Проверьте на опечатку и убедитесь, что объявление правильно размещено в элементе <application>
. В моих тестах я могу отключить создание отчетов с использованием метаданных, а затем включить их во время выполнения.
Ответ 2
Правильные ответы уже были опубликованы Бобом Снайдером и niqueco, однако кажется довольно утомительным изменять значение метаданных каждый раз, когда вы создаете актуальную версию APK, поэтому здесь представлено решение, использующее так называемый manifestPlaceholder и автоматически изменяющее значение на true
или false
в зависимости от buildType
.
Добавьте следующее в ваши приложения build.gradle
android {
// ...
buildTypes {
debug {
manifestPlaceholders = [enableCrashReporting:"false"]
}
release {
manifestPlaceholders = [enableCrashReporting:"true"]
}
}
}
И это на ваш AndroidManifest.xml
<manifest ... >
<application ...>
// ...
<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="${enableCrashReporting}" />
</application>
</manifest>
Вы можете проверить текущее значение, нажав на вкладку " Merged Manifest
", как только откроете AndroidManifest.xml. Вы должны увидеть что-то вроде этого:
Ответ 3
Я наконец нашел проблему. Crashlytics инициализируется поставщиком контента, поэтому к тому времени, когда вы попытаетесь отключить приложение onCreate()
это слишком поздно. Просматривая декомпилированный код, я видел, что вы можете отключить эту инициализацию, добавив метаданные в элемент <application> в манифесте.
Итак, что я делаю, это... Я добавил это в app/src/debug/AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><!--suppress ALL -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="<your app package>">
<application>
<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
</application>
</manifest>
Я также отключил Crashlytics в файле сборки градиента модуля приложения, добавив:
debug {
ext.enableCrashlytics = false
}
К моему удивлению, мне не нужно было делать Fabric.with(...)
. Выше было достаточно.
Он отлично работает: никаких отчетов.
Ответ 4
Вам необходимо отключить Crashlytics
приложений build.gradle. Отключить Crashlytics для отладочных сборников
android {
buildTypes {
debug {
// Disable fabric build ID generation for debug builds
ext.enableCrashlytics = false
...
Ответ 5
Получите эту информацию из документации для Android Настройте свои отчеты о сбоях Firebase
Включить поддержку отчетов: по умолчанию Firebase Crashlytics автоматически собирает отчеты о сбоях для всех пользователей вашего приложения. Чтобы предоставить пользователям больший контроль над отправляемыми данными, вы можете вместо этого включить отчет о подписке.
Для этого вы должны отключить автоматический сбор и инициализировать Crashlytics только для подписчиков.
Отключите автоматический сбор мета-данных в вашем файле AndroidManifest.xml:
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="false" />
Включите сбор для выбранных пользователей, инициализировав Crashlytics из одного из действий вашего приложения:
Fabric.with(this, new Crashlytics());
Ответ 6
Если вы хотите полностью отключить отчеты Firebase Crash, а также не нужно добавлять
com.crashlytics.sdk.android:crashlytics:2.9.1
зависимость, затем следуйте @reVerse ответу, но также добавьте это в свой AndroidManifest.xml:
<application ...>
// ...
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="${enableCrashReporting}" />
<meta-data
android:name="firebase_analytics_collection_deactivated"
android:value="true"/>
</application>