Как отключить Crashlytics во время разработки


245

Есть ли какой-нибудь простой способ отключить Crashlytics Android SDK во время разработки?

Я не хочу, чтобы это вызывало сбой каждый раз, когда я делаю что-то глупое

С другой стороны, я не хочу комментировать Crashlytics.start()и, возможно, рискну забыть раскомментировать и зафиксировать


Вы пытались просто удалить свой ключ API из манифеста, я не помню, если это сбой.
— Тиммете

@timmied Вылетает. Также комментируя всю строку в Manifestсбоях приложения, так что это делает вопрос немного более законным.
— Майкл

Ответы:


172

Марк из Crashlytics здесь. Вот несколько способов отключить Crashlytics во время сборки отладки!

  1. Используйте другой android: versionString для отладочных и выпускных сборок, а затем отключите отчеты о сбоях на веб-панели Crashlytics для отладочной версии.

  2. Оберните вызов Crashlytics.start () в оператор if, который проверяет флаг отладки. Вы можете использовать либо собственный флаг, либо подход, подобный предложенному здесь: Как проверить, подписан ли APK или «отладочная сборка»?


5
@marcr Как насчет использования BuildConfig.DEBUG?
— Дэннироа

3
@dannyroa BuildConfig.DEBUG - это не стандартный флаг, который работает во всех средах сборки. Я считаю, что он устанавливается последовательно при сборке с Eclipse & ADT, но не в других местах.
— марта

11
BuildConfig.DEBUGследует использовать, если вы строите с использованием Gradle. Он всегда будет генерироваться правильно.
— Остин Махони

3
@marcr Как насчет последней версии Crashlytics (поскольку она, похоже, объединена с Fabric), библиотека выполняет внутреннюю проверку BuildConfig.DEBUG?
— ахы

2
@akhyar Это не проверяется автоматически, я использую: if (! BuildConfig.DEBUG) {Fabric.with (this, new Crashlytics ());}
— Бьорн Кешель,

387

Я нашел решение от Crashlytics (с интеграцией Fabric)

Поместите следующий код в класс приложения onCreate()

Crashlytics crashlytics = new Crashlytics.Builder().disabled(BuildConfig.DEBUG).build();
Fabric.with(this, crashlytics);

РЕДАКТИРОВАТЬ:

В Crashalitics 2.3 и выше, это устарело. Правильный код:

CrashlyticsCore core = new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build();
Fabric.with(this, new Crashlytics.Builder().core(core).build());

или

Fabric.with(this, new Crashlytics.Builder().core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build()).build());

(скопировано из устаревшего метода Crashlytics отключено () )


EDIT2:

Вы также можете по желанию добавить это в свой buildTypeGradle. Эта команда отключает отправку файла сопоставления сбоев и генерацию идентификатора для каждой сборки, что ускоряет сборку Gradle этих разновидностей. (Он не отключает Crashlytics во время выполнения.) Смотрите ответ Майка Б. здесь.

buildTypes {
    release {
           ....
    }
    debug {
        ext.enableCrashlytics = false
    }
}

2
Это намного приятнее в использовании и остановит сбой вашего приложения, если вы будете делать вызовы Crashlytics в своем коде вне класса Application.
— speedynomads

1
В Crashlytics 2.3.0 это устарело :(
— Дамиан Вальчак,

1
ext.enableCrashlytics = false у меня тоже не работает с 2.5. На самом деле, это никогда не работало. Еще до Ткани.
— Бао-Лонг Нгуен-Тронг

2
У меня есть беспокойство здесь. Это позволит включить ответ и бета-версию? Похоже, это должно быть более правильно: CrashlyticsCore core = new CrashlyticsCore.Builder (). Disabled (BuildConfig.DEBUG) .build (); Fabric.with (это, новые ответы (), новая бета (), новая Crashlytics.Builder (). Core (core) .build ());
— Гберо

1
ext.enableCrashlytics = false не вылетает, если вы используете это правильно. Как преодолеть сбой в документации Fabrics: docs.fabric.io/android/crashlytics/build-tools.html .
— Фрэнк

46

Выбранный ответ больше не верен. Google изменил интеграцию Crashlytics. Моя текущая версия - 2.9.1и единственное, что мне нужно было сделать, это добавить implementation 'com.crashlytics.sdk.android:crashlytics:2.9.1'в мой файл Gradle. Больше ничего не требуется, приятно, но это означает, что Crashlytics всегда работает.

Решение 1

Скомпилируйте Crashlytics только в версии выпуска:

dependencies {
   ...
   releaseImplementation 'com.crashlytics.sdk.android:crashlytics:2.9.1' // update version
}

Решение 2

Если вы хотите дополнительно настроить Crashlytics, тогда Решение 1 не работает, так как классы Crashlytics не будут найдены в Отладочных сборках. Так что измените реализацию Gradle обратно на:

implementation 'com.crashlytics.sdk.android:crashlytics:2.9.1' // update version

Затем перейдите в манифесте и добавьте следующий meta-dataтег внутри applicationтега:

<application
        android:name="...>

        <meta-data
            android:name="firebase_crashlytics_collection_enabled"
            android:value="false" />

...

</application>

Добавьте к своей Launch-Activity (требуется только один раз, а не к каждой деятельности)

if (!BuildConfig.DEBUG) { // only enable bug tracking in release version
   Fabric.with(this, new Crashlytics());
}

Это включит Crashlytics только в версиях выпуска. Будьте внимательны, также проверьте BuildConfig.DEBUG при настройке Crashlytics, например:

if (!BuildConfig.DEBUG) {
   Crashlytics.setUserIdentifier("HASH_ID");
}

2
Это кажется чистым. Вместо инициализации в основном действии, когда вместо этого в экземпляре приложения?
— июля

Они Enable collection for selected users by initializing Crashlytics from one of your app's activitiesуказывают на веб-сайте: но я думаю, что это не сильно изменится, если вы инициализируете Crashlytics в приложении. Вы пробовали это? Если это работает, то я могу добавить это к своему ответу. firebase.google.com/docs/crashlytics/customize-crash-reports
— Пол Спизбергер,

2
Я не мог заставить работать другие решения, чтобы отключить сбои во время выполнения. Решение 1 просто сработало - почему я не подумал об этом.

Спасибо за решение. Когда я устанавливаю firebase_crashlytics_collection_enabledзначение false в манифесте, сбой не появляется на консоли (я использую v2.9.9). Поэтому я исправил это, добавив отдельный манифест для отладочной сборки firebase_crashlytics_collection_enabled=falseи trueдля выпуска
— Василий Кабунов

30

Если вы используете Gradle, просто добавьте это в аромат:

ext.enableCrashlytics = false

1
это только для аромата? как насчет отладки против выпуска? Я попытался отключить для отладки, но все еще отправить сбой
— xialin

Я думаю, что это работает только на вкус. ИМО, использующий флаг, на который указывают Остин и Марк, является самым легким.
— user1998494

Я нашел решение. но не уверен, что он совместим со старыми Crashlytics. это для новых Crashlytics в Fabric SDK. проверьте мой ответ ниже
— xialin

1
Эта команда отключает отправку файла сопоставления сбоев и генерацию идентификатора для каждой сборки, что ускоряет сборку Gradle этих разновидностей. (Он не отключает Crashlytics во время выполнения.) См. Ответ Майка Б. здесь: stackoverflow.com/questions/28339323/…
— Aphex

18
Это вызвало аварию ... " This app relies on Crashlytics."
— Сакибой

27

Проверьте последний документ. https://docs.fabric.io/android/crashlytics/build-tools.html#gradle-advanced-setup .

Помимо добавления ext.enableCrashlytics = falseв build.grade вам нужно сделать,

Crashlytics crashlyticsKit = new Crashlytics.Builder()
    .core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
    .build();

// Initialize Fabric with the debug-disabled crashlytics.
Fabric.with(this, crashlyticsKit);

Я пробовал таким образом, и приложение по-прежнему зависаетThis app relies on Crashlytics. Please sign up for access at
— Balflear

Я предполагаю, что вы отсутствуют ext.enableCrashlytics = falseв build.gradle.
— Абхишек Патидар

Нет, я добавил тип отладочной сборки в файле build.gradle, он находится в buildTypes -> debug, also i'm applying the plugin via плагине apply: 'io.fabric'`
— Balflear

Я не уверен, почему это решение было даже проголосовано 24 раза. This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up
— Сбой

24

Я нашел это самое простое решение:

    release {
        ...
        buildConfigField 'Boolean', 'enableCrashlytics', 'true'
    }
    debug {
        buildConfigField 'Boolean', 'enableCrashlytics', 'false'
    }

Вышеуказанные строки создадут статическое логическое поле, вызываемое enableCrashlyticsв BuildConfigфайле, которое вы можете использовать, чтобы решить, следует ли инициировать Fabricили нет:

    if (BuildConfig.enableCrashlytics)
        Fabric.with(this, new Crashlytics());

ПРИМЕЧАНИЕ. С помощью этого метода Fabrics инициализируется только в сборках выпуска (как указано в приведенном выше коде). Это означает, что вам нужно помещать вызовы статических методов в Crashlyticsклассе в ifблок, который проверяет, была ли инициализирована Fabrics, как показано ниже.

if (Fabric.isInitialized())
    Crashlytics.logException(e);

В противном случае приложение завершится с Must Initialize Fabric before using singleton()ошибкой при тестировании на эмуляторе.


17

2019 Ответ

Я пытался включить Crashlytics только в выпуске и отключить в режиме отладки в течение 2 часов, проверяя консоль Firebase, чтобы узнать, были ли загружены исключения или нет.

Есть 2 возможных способа сделать это.

ОПЦИЯ 1

Это работает, но если вы вызываете какой-либо Crashlyticsметод в отладочных сборках, приложение вылетает .

Приложение / build.gradle

android {
    buildTypes {
        release {
            manifestPlaceholders = [crashlyticsEnabled: true]
        }
        debug {
            manifestPlaceholders = [crashlyticsEnabled: false]
        }

AndroidManifest.xml

<manifest
    <application
        <meta-data
            android:name="firebase_crashlytics_collection_enabled"
            android:value="${crashlyticsEnabled}" />

ВАРИАНТ 2

Альтернатива, если это позволяет вам вызывать Crashlyticsметоды без предварительной проверки BuildConfig.DEBUG. С помощью этой настройки вы можете безопасно вызывать такие методы, как Crashlytics.logException()- они просто ничего не делают в отладочных сборках. Я не вижу, как отчеты загружаются в режиме отладки.

Приложение / build.gradle

android {
    buildTypes {
        release {
            ext.enableCrashlytics = true
        }
        release {
            ext.enableCrashlytics = false
        }

AndroidManifest.xml

<manifest
    <application
        <meta-data
            android:name="firebase_crashlytics_collection_enabled"
            android:value="false" />

Приложение onCreate ()

val crashlytics = Crashlytics.Builder()
    .core(CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
    .build()
Fabric.with(this, crashlytics)

Я думаю, что android:value="false"должен быть изменен на android:value="${enableCrashlytics}". Не так ли?
— JaydeepW

Еще одним преимуществом варианта № 2 является то, что вы начинаете с изначально отключенного сбора аналитики, а затем можете сначала спросить пользователя, можно ли отслеживать использование его приложения (например, GDPR). Тогда вы будете выполнять вызов Fabric.with, только если пользователь согласится на отслеживание.
— По Кристиан Хенден

Единственный недостаток опции # 2, это то, что она все еще создает отладочные версии в панели инструментов Firebase, даже если там не будет отображаться сбоев (так как они отключены). Это создает две проблемы - во-первых, сложнее найти версии выпуска; вторая - панель инструментов Firebase показывает только последние 100 версий, что может помешать вам увидеть сбои в некоторых старых версиях. В Fabric Dashboard вы можете отключить определенную версию, это не возможно в Firebase.
— Алексей Липов

14

Используйте это в MyApplication#onCreate()

if (!BuildConfig.DEBUG) Crashlytics.start(this);

РЕДАКТИРОВАТЬ Если вы обновились до Fabric, используйте этот ответ .


BuildConfig.DEBUG не всегда установлен правильно. Полагаясь на это, чтобы включить / отключить Crashlytics, я столкнулся с множеством проблем при использовании IntelliJ.
— Зеб Барнетт

5
Какие инструменты сборки вы используете? Gradle ВСЕГДА установит это значение. Год назад это было проблемой, но новые инструменты сборки стали намного лучше.
— Остин Махони

Я на v0.9. + Плагина Gradle для IntelliJ и v1.11 для самого Gradle.
— Зеб Барнетт

Я не видел никаких проблем ни в одном из моих приложений. BuildConfigгенерируется задачей Gradle, которая гарантированно выполняется. Я также использую buildConfigFieldдля установки пользовательских полей, и они всегда работают. tools.android.com/recent/androidstudio045released также предлагает использовать BuildConfig.DEBUG.
— Остин Махони

Как идеалист, я уверен, что хотел бы использовать его, поскольку это упростит не совсем автоматизированный процесс сборки для небольшой компании, в которой я работаю. Просто мы выпустили в производство сборку, которая зависела от этого флага, и Crashlytics никогда не видел, чтобы она была запущена. После того, как мы вернулись к переключению вручную, Crashlytics увидел это немедленно.
— Зеб Барнетт


9

Еще одно простое решение, которое мне нравится, потому что оно не требует других файлов манифеста:

Шаг 1 - определить заполнители манифеста в build.gradle

android {
    ...
    buildTypes {
        release {
            manifestPlaceholders = [crashlytics:"true"]
        }
        debug {
            manifestPlaceholders = [crashlytics:"false"]
        }
    }
    ...
}

Шаг 2 - используйте их в вашем AndroidManifest.xml

<meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="${crashlytics}" />

6

Обратите внимание, что вы также можете отключить надоедливую загрузку символов в отладочной сборке:

def crashlyticsUploadStoredDeobsDebug = "crashlyticsUploadStoredDeobsDebug"
def crashlyticsUploadDeobsDebug = "crashlyticsUploadDeobsDebug"
tasks.whenTaskAdded { task ->
    if (crashlyticsUploadStoredDeobsDebug.equals(task.name) ||
            crashlyticsUploadDeobsDebug.equals(task.name)) {

        println "Disabling $task.name."
        task.enabled = false
    }
}

Просто поместите его в build.gradleсвой модуль приложения.


6

Если вы хотите перехватить все сбои (для отладочной и выпускной сборок), но хотите разделить их в Crashlytics Dashboard, вы можете добавить эту строку кода в build.gradle:

debug {
    versionNameSuffix "-DEBUG"
}

Например, если versionName вашего приложения - 1.0.0, ваши сборки выпуска будут помечены как 1.0.0, в то время как отладочные сборки будут 1.0.0-DEBUG


Это оно? Не нужно делать ароматизаторы?
— портфолио

6

Здесь есть много хороших ответов, но для своего тестирования я использую отладочные сборки для внутренних бета-тестов и внепланового тестирования, где журналы сбоев все еще очень полезны, и я все еще хотел бы сообщить о них. Как и OP, все, что я хотел, это отключить их во время активной разработки, где я часто вызываю и быстро устраняю сбои.

Вместо удаления ВСЕХ отладочных сбоев вы можете отключить отчеты, только когда устройство подключено к вашей машине разработки с помощью следующего кода.

if (!Debug.isDebuggerConnected()) {
    Fabric.with(this, new Crashlytics());
}

Это не правильно. Я записываю нефатальные исключения в своем коде, используя Crashlytics.logException(e)этот оператор, и это исключение выдает в сборках отладки, поскольку синглтон Fabric не инициализирован. Если вы используете Crashlytics, то всегда инициализируйте синглтон Fabric. Смотри ответ Фами .
— NAXA

5

Проблема в том, что ни одно из решений не работает для последней версии SDK. (Я использую 2.9.0)

Вы не можете отключить его по коду, так как он компилируется в ваш проект и запускается даже до вызова onCreate вашего приложения. Таким образом, другое решение простое - не компилируйте crashlytics, когда это не нужно. Замените вызов 'compile' на 'releaseCompile' в файле build.gradle.

 releaseCompile('com.crashlytics.sdk.android:crashlytics:2.9.0@aar') {
        transitive = true
    }

3

На сегодняшний день самая простая версия при использовании Gradle для сборки:

if (!BuildConfig.DEBUG) {
    Fabric.with(this, new Crashlytics());
}

Он использует новый встроенный синтаксис от Fabric для Crashlytics и работает автоматически со сборкой Gradle.


3

Странная проблема, с которой я столкнулся: я следовал за ответом xialin (который также появляется на официальном сайте), и он не работал. Оказалось, что я ссылался BuildConfigв пакете Fabric, который также содержит статическую переменную DEBUG, которая была установлена ​​в false даже в режиме отладки.

Итак, если вы следуете вышеупомянутому решению и по-прежнему получаете отчеты об отладке, убедитесь, что вы ссылаетесь на это:

import com.yourpackagename.BuildConfig;

И не это

import io.fabric.sdk.android.BuildConfig;    

2

Если вас беспокоит BuildConfig.DEBUGнеправильная настройка, используйте ApplicationInfoвместо этого:

boolean isDebug = ( mAppContext.getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE ) != 0;
Crashlytics crashlytics = new Crashlytics.Builder().disabled( isDebug ).build();
Fabric.with( uIContext, crashlytics );

2

Используйте ароматы или соберите конфиги. Используйте отдельный идентификатор сборки для сборки dev, и все ваши сбои будут продолжаться в отдельном приложении. Может пригодиться, если вы поделитесь сборкой с пирами или используете ее без отладчика. Что-то вроде этого -

    productFlavors {
    dev {
        applicationId "io.yourapp.developement"
    }
    staging {
        applicationId "io.yourapp.staging"
    }

    production {
        applicationId "io.yourapp.app"
    }

2

Если вы хотите отладочную сборку релиза, вот способ:

buildTypes {
    release {
        signingConfig signingConfigs.config
        debuggable true //-> debuggable release build
        minifyEnabled true
        multiDexEnabled false
        ext.enableCrashlytics = true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        buildConfigField 'boolean', 'BUILD_TYPE_DEBUG', 'false'
    }
    debug {
        minifyEnabled false
        multiDexEnabled true
        ext.enableCrashlytics = false
        ext.alwaysUpdateBuildId = false
        // Disable fabric build ID generation for debug builds
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        buildConfigField 'boolean', 'BUILD_TYPE_DEBUG', 'true'
    }
}

Когда вы устанавливаете debuggable trueBuildConfig.DEBUG будет инициализироваться с true, поэтому я добавил эту переменную в класс BuildConfig.

Начальная ткань:

Crashlytics crashlytics = new Crashlytics.Builder()
            // disable crash reporting in debug build types with custom build type variable
            .core(new CrashlyticsCore.Builder().disabled(BuildConfig.BUILD_TYPE_DEBUG).build())
            .build();

    final Fabric fabric = new Fabric.Builder(this)
            .kits(crashlytics)
            //enable debugging with debuggable flag in build type 
            .debuggable(BuildConfig.DEBUG)
            .build();

    // Initialize Fabric with the debug-disabled crashlytics.
    Fabric.with(fabric);

Какова цель ext.enableCrashlyticsи ext.alwaysUpdateBuildIdпоскольку они, кажется, нигде не упоминаются. Я что-то упускаю?
— июля


BuildConfig.BUILD_TYPE_DEBUG является избыточным, BuildConfig.DEBUG может использоваться для получения того же значения
— Антонис Радц

@AntonisRadz Потому что мне нужна была отладочная сборка релиза
— М. Реза Насирлоо

1

Мы можем использовать метод ткани isDebuggable ().

import static io.fabric.sdk.android.Fabric.isDebuggable;

if(! isDebuggable()){
    // set Crashlytics ... 
}

Удачного кодирования :)


1

Вы можете использовать выделенный файл манифеста для режима отладки (работает для меня с Crashlytics 2.9.7):

Создайте файл app/src/debug/AndroidManifest.xmlи добавьте следующее:

<application>

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false"/>

</application>

Обратите внимание , что этот элемент мета-данные должны быть введены в отлаживать / AndroidManifest.xml только , а не в очередной AndroidManifest.xml

Используемое CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build()мной решение не сработало, и я обнаружил, что crashlytics инициализируется CrashlyticsInitProvider до вызова Application.onCreate () или запуска какого-либо действия, что означает, что ручная инициализация матрицы в приложении или деятельности не имеет эффект, потому что ткань уже инициализирована.


1

Шаг 1: В build.grade

buildTypes {
        debug {
            debuggable true
            manifestPlaceholders = [enableCrashlytic:false]
        }
        release {
            debuggable false
            manifestPlaceholders = [enableCrashlytic:true]
        }
    }

Шаг 2: в манифесте

<meta-data
            android:name="firebase_crashlytics_collection_enabled"
            android:value="${enableCrashlytic}" />

Шаг 3: В приложении или в первом действии

private void setupCrashReport() {
        if (BuildConfig.DEBUG) return;
        Fabric.with(this, new Crashlytics());
    }

Я не уверен, что шаг 3 необходим, но чтобы версия выпуска работала без сбоев. источник: https://firebase.google.com/docs/crashlytics/customize-crash-reports#enable_opt-in_reporting


1

Эта работа для меня:

    releaseCompile  'com.crashlytics.sdk.android:crashlytics:2.9.9'

и в buildTypes:

debug {
ext.enableCrashlytics = false
}

Как насчет использования Crashlytics в коде? Это даст вам ошибки компиляции.
— Micer

1

Существует два варианта отключения Firebase Crashlytics для следующей версии com.google.firebase: firebase-crashlytics: 17.0.0:

  1. Добавить метатег в манифест приложения

<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />

ИЛИ

  1. Сконфигурируйте непосредственно в приложении (имейте в виду, когда установлено значение false, новое значение не применяется до следующего запуска приложения)

FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true)


0

Другой способ, если вы хотите сделать это только в своей среде IDE, - выйти из плагина. Очевидно, он прекратит отправку отчетов, пока вы создаете сборки без повторного входа в систему.


0
  1. Добавьте это в build.gradle вашего приложения:

    android {
        buildTypes {
            debug {
              // Disable fabric build ID generation for debug builds
              ext.enableCrashlytics = false
              ...
  2. Отключите комплект Crashlytics во время выполнения. В противном случае комплект Crashlytics выдаст ошибку:

    // Set up Crashlytics, disabled for debug builds
    // Add These lines in your app Application class onCreate method
    
    Crashlytics crashlyticsKit = new Crashlytics.Builder()
        .core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
        .build();
    
    // Initialize Fabric with the debug-disabled crashlytics.
    Fabric.with(this, crashlyticsKit);
  3. В AndroidManifest.xml добавьте

    <meta-data
    android:name="firebase_crashlytics_collection_enabled"
    android:value="false" />

0

2020 Post Fabric Ответ

Вставьте приведенный ниже код в ваш класс Application и вызовите метод setCrashlyticsStateиз вашего приложения onCreate. При желании вы можете добавить свои идентификаторы тестового устройства кdebugDevices HashSet, чтобы ваши личные устройства можно было игнорировать даже при сборке в режиме выпуска.

Заметка. Идентификатор устройства, возвращаемый пользователем Settings.Secure.getString(getContext().getContentResolver(), Settings.Secure.ANDROID_ID);, не гарантируется быть уникальным или постоянным (он может измениться при сбросе настроек или вручную на устройстве с правами root). Но это должно быть достаточно хорошо.

private final HashSet<String> debugDevices = new HashSet<String>(Arrays.asList("6a3d5c2bae3fd32c"));

private boolean isDebugDevice(String deviceId) {
    return debugDevices.contains(deviceId);
}

private void setCrashlyticsState() {
    @SuppressLint("HardwareIds")
    String deviceId = Settings.Secure.getString(getContext().getContentResolver(), Settings.Secure.ANDROID_ID);
    if (BuildConfig.DEBUG || isDebugDevice(deviceId)) {
        Log.v("DeviceId", deviceId);
        FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false);
    }
}

Проверьте это BuildConfig. смотрит на правильный класс BuildConfig. Часто есть несколько вариантов, и неправильный может быть втянут.


-8

Это глупый ответ, я знаю.
Просто закомментируйте Fabric.with(this, new Crashlytics());, поработайте над этим и раскомментируйте его, когда захотите выпустить.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.