如何使用ProGuard回溯水平合并的类?

时间:2012-07-04 10:21:08

标签: android proguard

我们正在使用ProGuard对我们的Android应用进行模糊处理和优化,到目前为止,我们已将所有类/合并优化保持活跃状态​​。这样做的问题是:如果在水平合并到不同类的方法中发生错误,则回溯工具不会恢复该步骤,因此行号变得无用,并且无法追踪错误。

我们刚才有一个特殊的例子是一个静态帮助器方法被合并到一个类中,该类是我们链接的第三方JAR的一部分 - 我们甚至没有源代码。由于回扫显示第三方类中的行号(因为辅助方法被合并到其中),我无法继续。

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

1 个答案:

答案 0 :(得分:1)

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

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