Недавно я обновил Crashlytics в своем приложении для Android до версии 2.9.4. С тех пор я начал видеть ошибки на некоторых устройствах при попытке записать некоторую информацию:
java.lang.IllegalStateException:
at io.fabric.sdk.android.Fabric.singleton (Fabric.java:275)
at io.fabric.sdk.android.Fabric.getKit (Fabric.java:525)
at com.crashlytics.android.Crashlytics.getInstance
(Crashlytics.java:188)
at com.crashlytics.android.Crashlytics.checkInitialized
(Crashlytics.java:371)
at com.crashlytics.android.Crashlytics.log (Crashlytics.java:230)
Журнал вызывается в другом модуле, например:
Crashlytics.log(Log.DEBUG, "ISA", "Some log");
Основной модуль инициализирует Crashlytics в основной точке входа, прямо в onCreate, после вызова super.onCreate(savedInstanceState);:
Fabric.with(this, new Crashlytics());
Проблема появляется только на некоторых устройствах (1/100). Есть идеи, почему это происходит?




У меня никогда не было проблем с Fabric с этим. На мой взгляд, вы неправильно инициализировали Fabric.
Ткань должна быть инициализирована в классе Application:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Fabric.with(this, new Crashlytics());
}
}
@ user1592546, потому что так написано в документации Fabric.
@DennyDog Я не вижу этого в документации: firebase.google.com/docs/crashlytics/get-started
@ClassA Fabric - старая. Firebase Crashlytics - новейшая версия.
@androiddeveloper Да, но этот вопрос связан с аварийной обработкой ткани. Кроме того, ткань можно использовать до следующего года.
@ClassA Подождите, под словом "до следующего года" вы имеете в виду, что после этого он перестанет работать?
@androiddeveloper да, ткань перемещается на firebase, все пользователи должны выполнить миграцию до этого - get.fabric.io/roadmap
@ClassA Интересно, но что будет с приложениями, которые его используют, но не обновлены для использования Firebase? Будет ли это работать для них?
@androiddeveloper Я не уверен, закроется ли сайт Fabric. В настоящее время после миграции ваши данные доступны в Google crashlytics и Fabric. Поэтому я предполагаю, что более старые приложения по-прежнему смогут использовать Fabric, пока веб-сайт остается в рабочем состоянии.
О том, перестанет ли он работать, не говорится. Только о том, что будет работать. Однако есть подсказки: «Попрощайтесь с Fabric», «Мы будем поддерживать Fabric до тех пор, пока» ... Я думаю, это перестанет работать. Надеюсь, это не приведет к сбою многих приложений.
31 МАРТА 2020 Прощание с Тканью - по ссылке.
Не могли бы вы объяснить, почему его следует инициализировать в приложении, а не в основном действии onCreate?