Как записать дополнительные данные во время аварии - PullRequest
1 голос
/ 26 июня 2019

Время от времени я получаю NPE в приложении, которое я опубликовал в Play Store, и я хотел бы зарегистрировать дополнительную информацию, чтобы лучше понять, в чем дело.

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

Это код, который я использовал:

id = table.getId();    // <------ line that throws NPE
Crashlytics.log("userIsOnline: " + isOnline);   // <----- variable I want to know it's value

Сегодня я получил трассировку стека от двух сбоев, но ни одна переменная не была зарегистрирована. Разве это не то, как я должен регистрировать это или есть что-то еще, что я не понимаю?

Ответы [ 3 ]

1 голос
/ 26 июня 2019

Как гласит официальный документ,

Crashlytics.log() будет записывать только в отчет о сбое Crashlytics.

Используйте его выше id = table.getId(); и проверяйте данные в нефатальных файлахвкладка в ткани.

1 голос
/ 26 июня 2019

Вы можете использовать FirebaseAnalytics для регистрации событий во время сбоя.Вы можете использовать его для регистрации событий с помощью метода logEvent().

В следующем примере показано, как зарегистрировать предлагаемое событие SELECT_CONTENT:

val bundle = Bundle()
bundle.putString(FirebaseAnalytics.Param.ITEM_ID, id)
bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, name)
bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "image")
firebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, 
bundle)

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

val params = Bundle()
params.putString("image_name", name)
params.putString("full_text", text)
firebaseAnalytics.logEvent("share_image", params)

Надеюсь, что приведенный выше пример поможет вам.

0 голосов
/ 26 июня 2019
Log non-fatal exceptions
In addition to automatically reporting your app’s crashes, Crashlytics lets you log non-fatal exceptions.

On Android, that means you can log caught exceptions in your app’s catch blocks:

try {
    methodThatThrows();
} catch (Exception e) {
    Crashlytics.logException(e);
    // handle your exception here
}
...