Как прочитать «ИЛИ стек вызовов» в отчете о сбое консоли разработчика Android? - PullRequest
0 голосов
/ 14 мая 2018

При входе в Android Developer Console можно получить доступ к отчетам о сбоях. Поскольку я загрузил файлы сопоставления, журналы НЕ запутываются , но я все еще не уверен, как их читать:

java.lang.NullPointerException: 
    at com.my.app.Path.To.Package.CrashClass.methodA(TheClass.java)
    or                     .methodX (TheClass.java)
    or                     .methodY (TheClass.java)
    or                     .methodY (TheClass.java)
    at com.my.app.Path.To.Package.CallingClass$7.run (CallingClass.java) 
    at android.os.Handler.handleCallback (Handler.java:751) 
    at android.os.Handler.dispatchMessage (Handler.java:95) 
    at android.os.Looper.loop (Looper.java:154) 
    at android.app.ActivityThread.main (ActivityThread.java:6692) 
    at java.lang.reflect.Method.invoke (Method.java) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1468) 
    at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1358)

Я не понимаю, что такое информация о methodA, или methodB и т.д ...

Означает ли это, что NullPointerException происходит в каждом из этих классов?

Это стек вызовов в CrashClass (было бы удивительно, поскольку methodX не вызывает methodA или наоборот)?

1 Ответ

0 голосов
/ 29 мая 2018

Ответ на другой вопрос указал мне правильное решение для этого вопроса:

ProGuard может отображать разные методы класса для одного и того же запутанного имени. Например, оба метода MyClass.method1(...) и MyClass.method2(...) могут быть сопоставлены с запутанным именем MyClass.a(...).

Таким образом, когда в методе a происходит ошибка, он знает только, что это произошло в method1 ИЛИ method2. Вот почему стек вызовов может содержать элементы or ...

Чтобы избежать этой проблемы, можно добавить следующую опцию в конфигурацию Proguard:

-useuniqueclassmembernames

Более подробную информацию можно найти здесь .

...