Подтвердить что ты не робот

Проблема с записью моих данных с помощью краштитики

Я пытаюсь получить журналы с некоторыми данными службы с Crashlytics в моем приложении для Android. Но я не вижу свои журналы на панели инструментов. Я использовал это:

String myLog = getServiceData(); //myLog is not null and non-empty
CrashLytics.log(myLog);

и это:

String myLog = getServiceData(); //myLog is not null and non-empty
CrashLytics.log(Log.Error, getString(R.string.app_name), myLog);

Я пытался генерировать исключение в своем приложении и обрабатывать его, но не имеет никаких результатов:

try {
   int a = 0;
   a = 1/a;
}
catch (Exception e) {
   CrashLytics.log(myLog);
}

Также я читал в журнал Crashlytics не отправлен Мне нужно инициализировать crashlytics перед данными журнала. Я поставил Crashlytics.start(this) в onStart() событие моей деятельности, но больше не видел мои журналы на панели инструментов. Наконец, я попытался поместить Crashlitycs.start(это) непосредственно перед тем, как регистрировать свои данные, но все еще не имеет журналов на панели инструментов.

Plase, скажите мне, что я делаю неправильно, и как получить свои собственные журналы в панели мониторинга Crashlytics?

4b9b3361

Ответ 1

У меня была похожая ситуация. Проведя некоторые эксперименты, я смог вывести правила поведения Crashlytics.

Я делюсь своими знаниями здесь, так что (надеюсь) другим не придется проходить через трудный и трудоемкий процесс, который я сделал, чтобы понять это.

Crashlytics будет загружать отчет о сбое "на приборную панель" немедленно, только если произойдет фатальное исключение. Другими словами, когда ваше приложение падает. И ничего не отображается на приборной панели, пока и не будет загружен отчет о сбое.

Если вы регистрируете нефатальное исключение, используя CrashLytics.logException(e), отчет о CrashLytics.logException(e) не будет загружен до следующего перезапуска вашего приложения. Таким образом, вы не увидите исключения на панели инструментов Crashlytics до перезапуска приложения.

Вы можете сказать, когда происходит загрузка, потому что вы увидите такого рода сообщения в LogCat:

07-17 19:30:41.477 18815-18906/com.foo.bar I/Crashlytics﹕ Crashlytics report upload complete: 55A9BA0C01D7-0001-462D-B8B4C49333333.cls

Сообщение журнала Crashlytics должно быть связано с фатальным или не фатальным исключением, чтобы отображаться на панели инструментов.

Кроме того, сообщения журнала, которые не связаны с исключением , не сохраняются после перезапуска приложения.

Таким образом, если вы делаете что-то вроде журнала нескольких сообщений, затем перезапускаете приложение, затем приложение выдает исключение или регистрирует нефатальное исключение с помощью Crashlytics.logException(), сообщения журнала будут потеряны. Они не будут отображаться в приборной панели.

Если вы хотите регистрировать некоторые сообщения без фатального исключения, используйте один или несколько Crashlytics.log() за которыми следует Crashlytics.logException().

Чтобы убедиться, что он работает, запустите код и перезапустите приложение. На панели мониторинга вы должны увидеть журналы, связанные с проблемой, созданной для нефатального исключения. В дикой природе, вы просто должны доверять своим пользователям перезапустить приложение с некоторой регулярностью.

На инструментальной панели Fabric/Crashlytics вам нужно выбрать All Events или (если вы хотите видеть только ваши входящие звонки) Non-Fatals.

enter image description here

Ответ 2

в соответствии с базой знаний Crashlytics:

Зарегистрированные сообщения связаны с вашими авариями и отображаются в панель мониторинга Crashlytics, если вы посмотрите на конкретную аварийную ситуацию.

И по моему опыту это кажется правдой. Однако я не уверен в том, что определяет, какое ведение журнала связано с сообщением о сбое. Возможно, временное окно (время крушения) или ограниченное количество журналов (до сбоя) связано с сообщением о сбое?

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

Все зарегистрированные исключения будут отображаться как "нефатальные" проблемы в Панель управления Crashlytics.

Итак, если вы изменили свой try/catch на:

try {
   int a = 0;
   a = 1/a;
}
catch (Exception e) {
   CrashLytics.logException(e);
}

то он должен появиться на панели мониторинга Crashlytics.

Ответ 3

Вместо того, чтобы ловить исключение и регистрировать его, вместо этого вы можете использовать RuntimeExceptions:

throw new RuntimeException("Test crash");

Android Studio не потребует, чтобы вы их поймали, поэтому приложение прекратило и сразу же отправило отчет.