I am using Codemagic to build my Flutter app. Furthermore, I am using Firebase Crashlytics to keep track of my app. In order to properly use Firebase Crashlytics I need to upload the dSYM File of each build to Firebase.
When I build my app locally I can use the following script according to Firebase Crashlytics:
/path/to/pods/directory/FirebaseCrashlytics/upload-symbols -gsp /path/to/GoogleService-Info.plist -p ios /path/to/dSYMs
In order to upload my dSYM file automatically I have added this script to Xcode: https://stackoverflow.com/a/64782202
However, I want Codemagic to build and upload my dYSM files when I build the app. Therefore, I need to follow this documentation and added this code to my codemagic.yaml
file: https://docs.codemagic.io/knowledge-firebase/firebase-crashlytics-dsym-uploading/
Now I am facing multiple problems and questions:
- As you can see, I have multiple entries in my Crashlytics which have an Unknown Version. Where does it come from?
- Why do I have the version 89 multiple times with different UUIDs?
- Do I need the the script in Xcode when I build my App via Codemagic?
- How can I verify that Codemagic properly uploads the dSYM file? (as you can see currently there are just unknown versions with an uploaded dSYM file)
- Why are there some versions where the dSYM file is optional?
2
Answers
Check this explanation.
An app can have required and optional dSYMs. Optional are related to .frameworks being used. This is why a version that is using different frameworks will have multiple optional dSYMs for them. Required are related to your app.
Yes, you will need to upload the dSYMs of every build to get readable crash reports.
The easiest way would be to cause a test crash and see if you get the readable crash report or if you see missing dSYMs.
This was answered in #2
In the script you can also include the flag –debug, which will provide verbose output. You can see if there were any errors when uploading the dSYMs.
When dSYMs get uploaded to Crashlytics before there are any crashes, the dSYMs get processed and the dSYMs tab will also stop updating the info related to that UUID. The dSYMs doesn’t have the version and build number and this is why it will remain as "Unknown". The "Unknown" entries in Crashlytics seems to stem from each successful build you have on Codemagic.
Check the explanation here: https://stackoverflow.com/a/77965800
You don’t need the script in Xcode when building the app via Codemagic but ensure to follow the steps here when building via codemagic: https://docs.codemagic.io/knowledge-firebase/firebase-crashlytics-dsym-uploading/
One way to verify that dSYM files associated with each build are properly uploaded is to compare the UUIDs generated during the build process with those listed in the Firebase Console.
Optional are connected to the frameworks being used. This version seems to make se of several frameworks, hence the reason you have a number of dSYMs that are optional.