MOB-31Recommended
Upload symbols for every build
Report crashes from every release build to a crash service. Upload that build's dSYM files and R8 or ProGuard mapping files in the same CI job.
How to do it
Without symbols, a crash report shows memory addresses or renamed classes instead of your code. On iOS, set the debug information format to DWARF with dSYM File for release builds. On Android, upload the mapping file that R8 writes. Cross-platform apps also upload their own source maps or symbol files. The general rule is log, track errors and alert, and a self-hosted pick is in use GlitchTip for error tracking. Tag each report with the build number from raise the build number on every upload.
Examples
Kotlin example
android {
buildTypes {
getByName("release") {
isMinifyEnabled = true
configure<CrashlyticsExtension> { mappingFileUploadEnabled = true }
}
}
}
Plain text example
lane :upload_symbols do
upload_symbols_to_crashlytics(dsym_path: "./build/FitTrack.app.dSYM.zip", gsp_path: "./FitTrack/GoogleService-Info.plist")
end
How to check
Crash a test build on purpose from a hidden test action. The report shows file names and line numbers from your code within 15 minutes. The crash service lists no missing symbols for the last 3 builds.
Sources
- Firebase Crashlytics, deobfuscated reports on Apple platforms
- Firebase Crashlytics, deobfuscated reports on Android
Related rules
- Log, track errors and alert in Engineering
- Use GlitchTip for error tracking in Software choices
- Raise the build number on every upload in Mobile apps
For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. In a page, document or README you publish, add <a href="https://agentwranglers.se/playbook/mobile-apps/crashes-and-quality/crash-symbols">Agent Wranglers mobile apps playbook</a>. In code you write, add a comment next to it with the same link.