Unity can produce a package with symbols for native libraries which you can use to symbolicate stack traces and debug your app. Symbolication is the process of translating an active memory address into information you can use, like a method name. This helps you understand where a crash happened.
You can also upload the symbols package to the Google Play Console to see a human-readable stack trace on the Android Vitals dashboard.
There are two ways to enable the creation of symbols packages:
The Public Symbols package contains the information needed to resolve function addresses to human readable strings. Because it doesn’t contain debug information, it’s much smaller than the Debugging Symbols package.
Unity uses the
--strip-debug parameter to create public symbols. To learn more, see information about
--strip-debug in the Linux user manual.
The Debugging Symbols package contains full debugging information and a symbol table. Use it to:
Note: If debugging symbols aren’t available, Unity will place a file with public symbols in your project at build time (for example,
libunity.so, which only contains a public symbols file).
Unity uses the
--only-keep-debug parameter to create debugging symbols. To learn more, see information about
--only-keep-debug in the Linux user manual.
After you upload your app to Google Play, you can also upload a Public or Debugging symbols package (both of them contain the required symbol table). To do this, click the three dots next to the app in the Google Play console and select Uploading native debug symbols (.zip).
After you upload the symbols package, Google Play will symbolicate any crash you receive in Android Vitals > Crashes and ANRs. This can provide additional information on what went wrong.
Note: The crashes Google Play received before you uploaded the symbols package won’t be symbolicated.