1

我们正在使用 ProGuard 来混淆和优化我们的 Android 应用程序,到目前为止,我们一直保持所有类/合并优化处于活动状态。这样做的问题是:如果在水平合并到不同类的方法中发生错误,回溯工具不会恢复该步骤,因此行号变得无用并且无法追踪错误。

我们刚刚遇到的一个特殊示例是将静态辅助方法合并到一个类中,该类是我们链接的第 3 方 JAR 的一部分——我们甚至没有源代码。由于 retrace 向我显示了该 3rd 方类中的行号(因为辅助方法已合并到其中),所以我无法继续。

有没有办法在优化过程中追溯合并到其他类中的方法?

4

1 回答 1

1

标准的 java 类文件格式不提供一种方法来表示有关最终在单个类文件中的不同源文件的调试信息(尽管 dalvik 格式可以)。因此,ProGuard 可以合并类,但不能合并它们的所有调试信息。在堆栈跟踪中引用合并类的行获取这些类之一的名称。不过,行号继续引用原始源文件,这可能会有所帮助。

然而,更复杂的是,内联方法获取调用的行号。这种调试信息的丢失也会影响堆栈跟踪及其去混淆。

于 2012-07-04T13:57:09.927 回答