如何使用映射文件对 Android 堆栈跟踪进行去混淆处理

How to deobfuscate an Android stacktrace using mapping file

我从崩溃报告系统得到了一个堆栈跟踪,它被混淆了,就像

... Failed resolution of: Lru/test/c/b/a; ...

我有一个映射文件。

如何使用 mapping.txt 反混淆此堆栈跟踪?

从您的应用页面获取去混淆的崩溃堆栈跟踪

按照以下步骤将您的 mapping.txt 上传到您的应用程序 PlayStore 页面:

  1. 登录您的 Play 管理中心。
  2. Select 一个应用程序。
  3. 在左侧菜单中,单击 Android vitals > 反混淆文件。
  4. 点击应用版本旁边的上传。
  5. 为您的应用程序版本上传 ProGuard 映射文件。

执行此操作后,查看去混淆后的崩溃堆栈跟踪:

  1. 登录您的 Play 管理中心。
  2. Select 一个应用程序。
  3. 在左侧菜单中,点击 Android Vitals > ANRs & Crashes。
  4. Select 崩溃。
  5. 在“堆栈跟踪”选项卡上,您会看到经过去混淆处理的堆栈跟踪。

您可以查看 this link 了解更多详情。

反混淆一段堆栈跟踪

要自己转换代码,请使用回溯脚本(retrace.bat on Windows;retrace.sh on Mac/Linux)。它位于 ~/Android/sdk/tools/proguard/bin/ 目录中。该脚本采用 mapping.txt 文件和您的堆栈跟踪,生成一个新的、可读的堆栈跟踪。使用回溯工具的语法是:

retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]

我们可以使用pro-guard工具回溯:

1st 从以下位置获取映射文件

<project-path>app/build/outputs/mapping/flavor/release/mapping.txt

Find the pro-guard tool i.e. "proguardgui" from the below location

<your-computer-name>/AppData/Local/Android/SDK/tools/proguard/lib

那么你会得到proguardgui.jar

在 mac 上:/Users/<your computer name>/Library/Android/sdk/tools/proguard/lib

通过使用终端

java -jar /Users/<your computer name>/Library/Android/sdk/tools/proguard/lib/proguardgui.jar

proguardgui tool

现在单击左侧菜单侧的回溯选项以获取以下内容 window,从上述位置浏览您的 mapping.txt 文件,并将您的堆栈跟踪错误日志添加到混淆的堆栈跟踪中window 然后单击 ReTrace 按钮以获取去混淆错误报告。

There is one more way of doing automatically using Google play store console.

Check this website of Google Play Store Console for detailed steps.

另一种选择(适合我)。
位置:C:\ProgramFiles\Android\AndroidStudio\jre\bin(java.exe在这里)

  1. 添加来自 Sdk\tools\proguard\lib 的文件:

    proguard.jar

    retrace.jar

  2. 添加您的 mapping.txt 和堆栈跟踪文件

  3. 使用以下行创建一个 bat 文件:

    java -jar retrace.jar -verbose mapping.txt stacktrace

    暂停

  4. 运行吧。