查找由Proguard生成的混淆堆栈跟踪

4
我在Android Studio上创建了一个示例应用程序。运行ProGuard后,由于个人偏好,映射文件被放置在mappings.txt文件中。一切似乎都很正常。然而,我以为我的代码会被混淆。根据mappings.txt文件,我的字段"text"(一个TextView)已被重命名为"p"。然而,当我打开我的项目时,我仍然看到与之前相同的代码,我甚至在"text"上设置了一个新的字符串,程序也能正常运行。为什么我的代码似乎没有被混淆。我正在尝试查找混淆堆栈跟踪,谁知道它在哪里。顺便说一句,我在调试模式下运行了ProGuard。Android应该在ProGuard工具上包含视频。这需要从实际的代码开发中花费时间。
1个回答

10

Proguard不会改变您的代码,它只会在生成的APK中重命名字段和方法名称,而不会更改您的代码。

您需要对混淆后的堆栈跟踪进行反混淆。为此,可以执行以下步骤:

  1. 打开 /tools/proguard/bin/proguardgui.bat
  2. 在左侧栏中选择 ReTrace。
  3. 添加您的映射文件和混淆后的堆栈跟踪。
  4. 单击 ReTrace。

谢谢回复。但是映射不是与混淆的堆栈跟踪相同吗?我在哪里可以找到混淆的堆栈跟踪?我确实在我的Proguard规则文件中包含了printusage、printmapping和printseeds。@Ashwin - i_o
以上答案是正确的答案。当用户报告您的应用程序崩溃时,在开发人员控制台中或者在错误报告中,如果APK已经被混淆,将出现模糊的堆栈跟踪。mappings.txt 允许 ReTrace 对混淆的堆栈跟踪进行解码,通过从跟踪到您在 Android Studio 中看到的未混淆源代码的反向映射来实现解码。 - ratana

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接