My unity andriod app were crashing so i have to figureout what went wrong. If it is my own device i can use andriod log cat unity pacakge to view the logs directly in unity. But it was on client mobile so i have to find a solution. you can use app store apps that can show the logs to you but i prefer to integrate logging system so that if it later crash i get a report or log so i found firebase crashlytics. I have already impelemtend firebase anayltics in my project but crashlytics helps you track crashes. You can fire your own custom exception to test.
There is guide available (https://firebase.google.com/docs/crashlytics/unity/get-started) by the firebase for up and running with the crashlytics. You can follow its easy so i am not going to repeat it. I found an issue while uploading the debug symobls.
So remember if your project using il2cpp you have to uplaod the debug symobls. And for this you need to do debug symbol setting in build menu.
Now when you will create a build it will also create debug symbole file. zip file.
But when i tried to use it keep getting failed. So first i remove special character from the path like @ and then i shortent the name of the zip file. Then even i made the file name simpler but it was not working. Then i found that if you add --debug in the command it will show all traces
Firebase cli command: firebase crashlytics:symbols:upload --debug --app=1:1004535757371:android:7ee6010f2ff731333efa1e "F:\firebase\symbols.zip"
Then i found these long traces along with issue:
> firebase crashlytics:symbols:upload --debug --app=1:1004535757371:android:7ee6010f2ff731333efa1e "F:\firebase\symbols.zip"
[2026-07-30T14:03:54.151Z] ----------------------------------------------------------------------
[2026-07-30T14:03:54.164Z] Command: F:\firebase\firebase-cli.exe C:\Users\C.care.DESKTOP-2BIN6BV\.cache\firebase\tools\lib\node_modules\firebase-tools\lib\bin\firebase crashlytics:symbols:upload --debug --app=1:1004535757371:android:7ee6010f2ff731333efa1e F:\firebase\symbols.zip
[2026-07-30T14:03:54.165Z] CLI Version: 15.25.0
[2026-07-30T14:03:54.166Z] Platform: win32
[2026-07-30T14:03:54.166Z] Node Version: v20.18.2
[2026-07-30T14:03:54.168Z] Detected Agent: unknown
[2026-07-30T14:03:54.170Z] Time: Thu Jul 30 2026 19:03:54 GMT+0500 (Pakistan Standard Time)
[2026-07-30T14:03:54.171Z] ----------------------------------------------------------------------
[2026-07-30T14:03:54.228Z] Buildtools Jar already downloaded at C:\Users\C.care.DESKTOP-2BIN6BV\.cache\firebase\crashlytics\buildtools\crashlytics-buildtools-3.0.3.jar
..... long debug log message center
[CRASHLYTICS LOG ERROR] Crashlytics execution failed.
java.io.IOException: Breakpad symbol generation failed (exit=1), see STDERR
at com.google.firebase.crashlytics.buildtools.ndk.internal.breakpad.BreakpadSymbolGenerator.generateSymbols(BreakpadSymbolGenerator.java:145)
at com.google.firebase.crashlytics.buildtools.Buildtools.generateNativeSymbolFiles(Buildtools.java:325)
at com.google.firebase.crashlytics.buildtools.Buildtools.generateNativeSymbolFiles(Buildtools.java:296)
at com.google.firebase.crashlytics.buildtools.CommandLineHelper.executeGenerateSymbols(CommandLineHelper.java:209)
at com.google.firebase.crashlytics.buildtools.CommandLineHelper.executeCommand(CommandLineHelper.java:141)
at com.google.firebase.crashlytics.buildtools.CommandLineHelper.main(CommandLineHelper.java:88)
at com.google.firebase.crashlytics.buildtools.Buildtools.main(Buildtools.java:130)
Error: java command failed with args: -jar,C:\Users\C.care.DESKTOP-2BIN6BV\.cache\firebase\crashlytics\buildtools\crashlytics-buildtools-3.0.3.jar,-symbolGenerator,breakpad,-symbolFileCacheDir,C:\Users\CCARE~1.DES\AppData\Local\Temp\crashlytics-842c06be-9d51-4bb5-a9a7-35055dcf944f\nativeSymbols\1-1004535757371-android-7ee6010f2ff731333efa1e\breakpad,-verbose,-generateNativeSymbols,-unstrippedLibrary,F:\firebase\symbols.zip,-clientName,firebase-cli;crashlytics-buildtools
Issue Crashlytics execution failed. java.io.IOException: Breakpad symbol generation failed (exit=1)
if you see right above this line you will find particular crash reason!
Crashlytics Breakpad symbol generator (dump_syms.exe) is successfully processing several libraries but failing and crashing the upload when it hits this specific file:
CRASHLYTICS LOG DEBUG] Crashlytics generating Breakpad Symbol file for: ...\arm64-v8a\libgilzoide-sqlite-net.so
The exit=1 IOException directly follows this file extraction. This usually happens for one of two reasons:
The library is already stripped: Crashlytics requires unstripped native libraries (files that still contain their debugging information). If
libgilzoide-sqlite-net.sowas already stripped during the build process, thedump_symstool cannot read it and will crash.The file is corrupted or unsupported: The
.sofile might be malformed or compiled in a way that the Breakpad parser doesn't currently support.
So in order to resolve this i manually deleted the .so file (libgilzoide-sqlite-net.so) which creating problem from symbol zip file. This time i give symbol folder directly instead zip file. And failed again with same kind of problem but with different .so file. libUnityARCore.so! So i reapeat the same steps and time it uploaded the crashlytics debug symobls on firebase.
What went wrong with crashlytics in unity andriod?
1. What are Debug Symbols? (The "Translation Map")
When your code compiles into an Android app, function names and line numbers (like PlayerHealth.TakeDamage() line 42) are converted into raw binary memory addresses (like 0x7f8a12b).
A symbol file is simply a translation map that matches those raw memory addresses back to human-readable code lines when a crash happens.
2. "Unstripped" vs. "Stripped" Files
Unstripped (
.sowith debug info): Contains both the runnable code and the translation map.Stripped (
.sowithout debug info): The translation map has been removed to shrink file size so users don't have to download extra megabytes.
3. Why Firebase Failed
When you run firebase crashlytics:symbols:upload, Firebase scans every .so file in your folder and tries to build readable crash maps (.sym files).
For your actual game logic (
libil2cpp.so) and Unity (libunity.so), Unity provided the translation map. Firebase read them successfully and generated a massive 359 MB symbol file.However, third-party plugin developers (like SQLite or Google ARCore) ship their
.sofiles pre-stripped inside their Unity packages to save space.When Firebase tried to read the translation map for
libgilzoide-sqlite-net.soorlibUnityARCore.so, it found nothing there. Instead of skipping them gracefully, the tool panicked, threw anexit=1error, and aborted the whole process.
Why deleting them was the right move
You only need crash translation maps for code you write (or Unity's engine). You don't need line-by-line debugging for closed-source SDKs or third-party wrappers.
By removing those third-party files, Firebase only processed the maps that existed, uploaded your game's C# symbols (libil2cpp.so), and completed cleanly!
0 Comments