2017-01-14 3 views
4

Недавно у меня появилось опубликованное запутанное приложение для Android с включенной отчетностью о сбоях в firebase. Приложение однажды выходит из строя, и, поскольку я не загружал файл сопоставления, я не могу правильно прочитать stacktrace.Получите необработанную стеклу из отчета об аварийной ситуации Firebase

Так что я хотел, чтобы загрузить трассировку стека и deobfuscate вручную с /retrace.sh -verbose mapping.txt ~/trace.txt

Однако я не могу получить сырой вид StackTrace ...

Так что у меня 2 вопроса:

  1. Как я могу получить необработанную форму из вкладки отчетов о сбоях в firebase на своем сайте?
  2. Как загрузить файл сопоставления перед публикацией приложения в магазин игр?
+0

Можете ли вы опубликовать пример своей скопированной вручную трассировки стека из отчетов о сбоях в firebase? Я могу ответить на оба ваших вопроса. – Wilik

+0

Если вы хотите эту возможность копировать трассировки стека из консоли Firebase Crash Reporting, пожалуйста, также сделайте запрос функции для него. Каждый отчет имеет значение: https://firebase.google.com/support/contact/bugs-features/ –

ответ

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

Проблема заключается в деобфускации не работает с этой трассировки стека строки, скопированного из Firebase Краш отчетности, это из-за недостающего в заявлении в начале каждой строки трассировки стека.

Например, это то, что вы получаете от Firebase Крушения Докладываю

Exception java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.models.User.getUserName()' on a null object reference 
com.example.views.adapters.ExampleAdapter.a (SourceFile:110) 
com.example.views.adapters.ExampleAdapter.a (SourceFile:31) 
b.a.a.a.b.a (SourceFile:54) 
b.a.a.a.b.a (SourceFile:54) 
android.support.v7.widget.RecyclerView$a.a (SourceFile:6279) 
android.support.v7.widget.RecyclerView$a.b (SourceFile:6312) 

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

Exception java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.models.User.getUserName()' on a null object reference 
at com.example.views.adapters.ExampleAdapter.a (SourceFile:110) 
at com.example.views.adapters.ExampleAdapter.a (SourceFile:31) 
at b.a.a.a.b.a (SourceFile:54) 
at b.a.a.a.b.a (SourceFile:54) 
at android.support.v7.widget.RecyclerView$a.a (SourceFile:6279) 
at android.support.v7.widget.RecyclerView$a.b (SourceFile:6312) 

С этой новой строки, вы должны быть в состоянии deobfuscate трассировки стека, как обычно.

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

  1. Команда Firebase недавно выпустила плагин Crash Reporting для этой цели. The guide is here - Uploading ProGuard mapping files with Gradle

Честно говоря, я не смог включить этот плагин успешно, все еще запутавшись в руководстве. Я действительно надеюсь, что они сделают это так же просто, как в Fabric Crashlytics, просто добавив ext.enableCrashlytics = true в файл build.gradle.

Существует также другой способ, путем преднамеренного сбоя приложения перед выпуском, а затем сгенерировать новый APK выпуска без ошибки, а затем вы можете загрузить файл mapping.txt в консоль Firebase Crash Reporting. :)

+0

Хорошее и быстрое ответное спасибо. Я буду ждать, сможет ли кто-нибудь найти другой способ получить исходную стекловидную структуру, но я думаю, что другого пути нет. Я сделаю это с помощью гида, которого вы предложили ... – VizGhar

+0

Работал, спасибо! Я все еще не могу обезвредить первую строку сбоя, но это все еще намного лучше, чем ничего: «Exception java.lang.NullPointerException: попытка вызвать виртуальный метод» void xxx.hib $ dr() »в ссылке на нулевой объект '. У вас есть дополнительные сведения об этой первой строке? – Vasiliy

+0

@ Vasiliy, извините, я тоже не могу деобфискировать эту первую строку: /, но вы уже должны знать, где проблема, просто просматривая строки под этой строкой. – Wilik

Смежные вопросы