Android proguard不完整的堆栈跟踪

Android proguard不完整的堆栈跟踪,第1张

概述我遇到了一个问题,即开发人员控制台中的堆栈跟踪与代码不匹配.行号显着关闭,并且必须在跟踪中的方法将不会存在于控制台的跟踪中.例如(简化的控制台跟踪):at getBitmapSize at getBitmapBytes at onActivityResult 但是在代码中它必须采用这条路径:onActivitResult -> handleSaveIm

我遇到了一个问题,即开发人员控制台中的堆栈跟踪与代码不匹配.行号显着关闭,并且必须在跟踪中的方法将不会存在于控制台的跟踪中.例如(简化的控制台跟踪):

at getBitmapSizeat getBitmapBytesat onActivityResult

但是在代码中它必须采用这条路径:

onActivitResult -> handleSaveImage -> getBitmapBytes -> getBitmapSize

这段代码多年来没有变化,因此不需要使用错误的mapPing.txt.以某种方式应用proguard是删除应用程序中的结构.那可能吗?它不会映射回来吗?

在转向proguard之前,我从未在堆栈跟踪中看到丢失方法.

还有什么我应该知道的关于让行号匹配?

我已经设定:

-keepattributes Sourcefile,lineNumbertable

这几乎是有效的.他们只是没有正确排队.

更新

我设置了一个测试,将NPE放在可预测的内联点上.

(优化)
logcat错误具有正确的行号,并且仅为了清楚而分开的方法明显是行间的.通过正确的行号,一切都更加明显.

(未优化)
获得相同的堆栈跟踪,除了跟踪中的其他方法.行号再次正确.

我不明白为什么开发人员控制台跟踪的行号错误,但这就是它难以理解的原因.它们不仅在一个文件中关闭,而且在所有文件中都关闭,因此它只是一个令人困惑的混乱,尤其是在您有多个异常处理(如i / o)的任何地方.

更新2

我将未经优化的应用程序提交到Play商店,现在堆栈跟踪排队.当你依赖Play堆栈跟踪时,我建议不要在复杂的应用程序中使用优化.

最佳答案启用Proguard优化后,它可能会内联小方法.这可以解释为什么堆栈跟踪中似乎缺少步骤.尝试在Proguard配置中禁用优化.有关如何为AndroID配置优化的指导,请参阅Android Proguard does not inline.

如果您正在使用Gradle构建系统,build.gradle中将有一行包含以下内容:

proguardfiles getDefaultProguardfile('proguard-androID-optimize.txt'),'proguard-rules.txt'

要尝试禁用优化,请将其更改为

proguardfiles getDefaultProguardfile('proguard-androID.txt'),'proguard-rules.txt'
总结

以上是内存溢出为你收集整理的Android proguard不完整的堆栈跟踪全部内容,希望文章能够帮你解决Android proguard不完整的堆栈跟踪所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1140430.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存