fluttergoogle-playflutter-release

Flutter is it meaningless to upload debug symbols on obfuscating?


I have uploaded a flutter obfuscating bundle to the play store. I have got the following warning:

This App Bundle contains native code, and you've not uploaded debug symbols. We recommend that you upload a symbol file to make your crashes and ANRs easier to analyse and debug.

Isn't it meaningless to obfuscate your app and then add debug symbols?

The idea behind obfuscating is difficult reverse engineering by making the code unreadable. Does giving a debug symbols file the same as giving a decrypt obfuscating map?


Solution

  • Obfuscation is all about renaming your human-readable classes and functions into something meaningless to a human. Machines don't care about names but people trying to reverse engineer your code would have a much harder time.

    On the other hand, when your app crashes, the Google Play Developer Console would log this crash for you to inspect and debug. But as the final user has an obfuscated version of your app, the report sent to you is written with meaningless names and you cannot debug it.

    Now, the debug symbols map are used internally by the Play Console to resymbolize the crash report into human readable class names so you can debug it easily.

    TLDR: Upload the debug symbols. They allow you (the developer) to debug ofuscated crash reports and are only available (indirectly) to you, not people trying to reverse engineer your app