【问题标题】:How to read "OR call stack" in Android Developer Console crash report?如何在 Android Developer Console 崩溃报告中阅读“OR 调用堆栈”?
【发布时间】:2018-10-23 23:04:57
【问题描述】:

登录 Android 开发者控制台时,可以访问崩溃报告。 由于我上传了映射文件,日志没有被混淆,但我仍然不知道如何阅读它们:

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)

我不明白methodAmethodB等的信息是什么...

这是否意味着,NullPointerException 发生在每个类中?

这是CrashClass 中的调用堆栈吗(如果methodX 不调用methodA 或反之亦然,这会令人惊讶)?

【问题讨论】:

    标签: android crash-reports


    【解决方案1】:

    另一个问题的答案为我指出了这个问题的正确解决方案:

    ProGuard 可以将一个类的不同方法映射到同一个混淆名称。例如MyClass.method1(...)MyClass.method2(...) 这两个方法都可以映射到混淆名称MyClass.a(...)

    因此,当方法a 发生错误时,只有知道,这发生在method1 method2。这就是为什么调用堆栈可能包含或项...

    为避免此问题,可以在 Proguard 配置中添加以下选项:

    -useuniqueclassmembernames
    

    更多信息可以在here找到。

    【讨论】:

      猜你喜欢
      • 2018-10-26
      • 1970-01-01
      • 1970-01-01
      • 2011-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多