Использование пользовательского обработчика сбоев с установленным Firebase

Я использовал аккуратную библиотеку для обработки сбоев принудительного закрытия:

https://github.com/Ereza/CustomActivityOnCrash

Он отлично работал, пока я не решил добавить уведомления Firebase в свое приложение. Я выбрал только уведомления и поэтому добавил только следующую зависимость:

compile 'com.google.firebase:firebase-messaging:10.0.1'

По какой-то причине отчеты о сбоях Firebase также инициализируются, потому что пользовательский обработчик сбоев видит это и даже отображает следующее сообщение:

E/CustomActivityOnCrash: IMPORTANT WARNING! You already have an UncaughtExceptionHandler, 
are you sure this is correct? If you use ACRA, Crashlytics or similar libraries, 
you must initialize them AFTER CustomActivityOnCrash! Installing anyway, but your
original handler will not be called.

Мой пользовательский обработчик сбоев — это самое первое, что инициализируется в моем (приложении) методе onCreate(), поэтому я не вижу, где и как предотвратить загрузку/инициализацию отчетов о сбоях Firebase.

Любая помощь будет принята с благодарностью!


person buradd    schedule 07.04.2017    source источник
comment
Содержит ли ваш вывод logcat для запуска приложения какие-либо сообщения, связанные с FirebaseCrash? Когда я запускаю приложение без FirebaseCrash, я вижу D/FirebaseApp: com.google.firebase.crash.FirebaseCrash is not linked. Skipping initialization. Когда присутствует FirebaseCrash, я вижу I/FirebaseCrash: FirebaseCrash reporting initialized.   -  person Bob Snyder    schedule 07.04.2017
comment
подождите, я на самом деле вижу это сейчас: I/FirebaseCrashApiImpl: FirebaseCrashApiImpl, созданный ClassLoader p[DexPathList[..... I/FirebaseCrash: отчет FirebaseCrash об инициализации com.google.....   -  person buradd    schedule 07.04.2017


Ответы (2)


Я нашел свой ответ благодаря комментарию @BobSnyder - это привело меня к поиску и поиску этого предыдущего вопроса/ответа:

Как отключить отчеты о сбоях Firebase по умолчанию?

и в конечном итоге я использую этот ответ для решения моей проблемы:

If you want to disable the Firebase Analytics Crash Reporting, use the below 
code inside app.gradle file.

configurations {
    all*.exclude group: 'com.google.firebase', module: 'firebase-crash'
}
person buradd    schedule 07.04.2017

Я разработчик этой библиотеки. Версии до 1.5.0 приводят к тому, что отчеты о сбоях Firebase перестают работать. Приложение не будет аварийно завершать работу, но исходный UncaughtExceptionHandler, установленный внутри Firebase, никогда не будет вызываться, поэтому вы не получите данных о сбоях в своей консоли Firebase.

Это происходит, даже если CustomActivityOnCrash.install() вызывается как первая строка вашего класса Application, потому что Firebase инициализирует свой UncaughtExceptionHandler в качестве провайдера, поэтому в конечном итоге выполняется до создания экземпляра объекта Application.

Версия 2.0.0 библиотеки устраняет эту проблему, используя ту же процедуру, что и Firebase (с провайдером), но с более высоким initOrder, поэтому она выполняется раньше, чем Firebase.

Обновите свою зависимость, чтобы она работала должным образом (однако помните об изменениях API, поскольку версия 2.x несовместима с кодом 1.x):

dependencies {
    compile 'cat.ereza:customactivityoncrash:2.0.0'
}
person Ereza    schedule 27.05.2017