5

我在使用 proguard 构建的 Android 应用程序上使用 Google Analytics v4 API。由此产生的崩溃报告是神秘的。例如,`NullPointerException (@a:t:-1) {main}'

1)我可以不用猜测就可以根据提供的信息找到这次崩溃的确切位置吗?

2) 如何提高崩溃报告的可读性?该文档显示了如何设置自定义异常报告器,这是有道理的。但是,它也指出

切勿将异常消息 (e.getMessage()) 发送到 Google Analytics,因为它可能包含个人身份信息。

因此,如果不是消息,我可以使用异常的哪些字段来生成崩溃报告,让我在使用 proguard 的应用程序上找到崩溃的位置?

4

3 回答 3

5

除了@aleph_null 所说,您应该将这两行添加到您的proguard 配置文件中以保留您的行号,否则您总是会在异常消息中看到-1。

-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
于 2014-08-05T00:23:53.583 回答
1

解决方案是覆盖StandardExceptionParser以报告根本原因的包名称。有关更详细的描述,请参阅我的博客文章。

于 2014-06-30T02:56:40.223 回答
1

一些东西:

  1. Proguard 会为您执行的每次编译生成一个 ranames 映射。如果您将这些文件保存在某处,则可以自己映射堆栈。
  2. 如果您只是在本地机器上调试应用程序,请尝试禁用 proguard。
  3. 我认为这里的主要问题是不应将个人身份信息发送给 Google。如果你能以某种方式只解析堆栈跟踪的前 2 或 3 个类,那么事情不会起作用吗?

随时提出更详细的问题,我会尽力提供帮助。

于 2014-05-17T01:20:10.887 回答