Search code examples
androidproguardobfuscationdeobfuscation

How to deobfuscate an Android stacktrace using mapping file


I got a stacktrace from the crashreporting system and it is obfuscated, like

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

I have a mapping file.

How to deobfuscate this stacktrace using mapping.txt?


Solution

  • Get deobfuscated crash stacktrace from your app page

    Upload your mapping.txt to your app PlayStore page with the following steps:

    1. Sign in to your Play Console.
    2. Select an app.
    3. On the left menu, click Android vitals > Deobfuscation files.
    4. Next to a version of your app, click Upload.
    5. Upload the ProGuard mapping file for the version of your app.

    After doing so, to view your deobfuscated crash stack traces:

    1. Sign in to your Play Console.
    2. Select an app.
    3. On the left menu, click Android vitals > ANRs & Crashes.
    4. Select a crash.
    5. On the "Stack Traces" tab, you'll see your deobfuscated stack traces.

    You can check this link for more details.

    Deobfuscate a piece of stacktrace

    To convert the code by yourself use the retrace script (retrace.bat on Windows; retrace.sh on Mac/Linux). It is located in the ~/Android/sdk/tools/proguard/bin/ directory. The script takes the mapping.txt file and your stack trace, producing a new, readable stack trace. The syntax for using the retrace tool is:

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