Android Proguard不完整的堆栈跟踪

安东尼

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

at getBitmapSize
at getBitmapBytes
at onActivityResult

但是在代码中,它必须采用以下路径:

onActivitResult -> handleSaveImage -> getBitmapBytes -> getBitmapSize

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

在打开proguard之前,我从未在堆栈跟踪中看到丢失的方法。

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

我已经设定:

-keepattributes SourceFile,LineNumberTable

这几乎可以工作。他们只是从来没有正确排队。

更新资料

我设置了一个测试,该测试会将NPE放置在可预测的在线位置。

(已优化)logcat错误具有适当的行号,并且清楚地内联了仅出于清晰目的而分开的一种方法。有了正确的行号,一切都会更加明显。

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

我不明白为什么开发者控制台跟踪的行号错误,但这就是很难遵循的原因。它们不仅在一个文件中关闭,而且在所有文件中关闭,所以这只是一个混乱的混乱,尤其是在您具有多个异常处理(例如I / O)的任何地方。

更新2

我将未优化的应用程序提交到Play商店,并且堆栈跟踪现在排列起来。当您依赖于Play堆栈跟踪时,建议不要在复杂的应用程序中使用优化。

格雷厄姆·博兰德

启用Proguard优化后,它可能会内联小的方法。这可以解释为什么堆栈跟踪中似乎缺少步骤。尝试在Proguard配置中禁用优化。有关如何为Android配置优化的指南,请参见Android Proguard不内联

如果您使用的是Gradle构建系统,那么您的一行中将build.gradle包含以下内容:

proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.txt'

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

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

traceback.print_exc()显示不完整的堆栈跟踪

来自分类Dev

领域查询返回Android中设置的不完整结果

来自分类Dev

Xamarin Android支持库v4(不完整)?

来自分类Dev

opencv4android:构建路径不完整

来自分类Dev

Android:Rest API返回的响应不完整

来自分类Dev

在堆栈上分配不完整的类型

来自分类Dev

在堆栈上分配不完整的类型

来自分类Dev

如何使用proguard对Android堆栈跟踪进行模糊处理?

来自分类Dev

使用C ++ 11 std :: async在android ndk中无效使用不完整类型

来自分类Dev

在Android开放源代码项目中恢复不完整的下载

来自分类Dev

不完整的android appcompatfragmentsupport:缺少资源divider_horizontal_bright_opaque.9.png

来自分类Dev

不完整的堆栈闪电战 ngbd 表示例

来自分类Dev

如何渲染到画布的Android设备上查看没有先使其(即不完整布局)

来自分类Dev

xml文件中的文本不完整,导致新创建的Android Studio项目出现错误

来自分类Dev

分数不完整

来自分类Dev

分数不完整

来自分类Dev

HWadress不完整

来自分类Dev

Android Studio堆栈跟踪错误

来自分类Dev

错误:类型不完整

来自分类Dev

类型定义不完整

来自分类Dev

数组类型不完整?

来自分类Dev

不完整名称的FindWindow()

来自分类Dev

Python:打印不完整

来自分类Dev

字段类型不完整?

来自分类Dev

粗暴的回应不完整

来自分类Dev

Vim背景不完整

来自分类Dev

不完整的球面OpenGL

来自分类Dev

gnuplot数字不完整

来自分类Dev

libboost似乎不完整