Reputation:
I have a question concerning dSYMS and how Crashlytics handles them.
My application contains different targets and the whole project is compiled with bitcode enabled
because of the Watchkit App
and Watchkit App Extension
targets.
I then followed the Missing dSYMs Documentation in order to manually upload my missing dSYMs. It worked, the Required missing dSYMs are now striped on my dashboard.
But I was wondering, how exactly does it work? This version of my application is on the AppStore for 1 month.
Will I get crash reports only from today, the date I uploaded my dSYMs ? Should I manually upload for every releases?
I don't really understand the process.
Upvotes: 1
Views: 336
Reputation: 16249
Mike from Fabric here.
dSYMs contain the symbols for your app needed to provide fully symbolicated stack traces. When you build locally in Xcode, the dSYMs are on your local machine and so the Fabric run script build phase can upload them.
With Bitcode enabled, Apple is recompiling your app on their servers which creates new dSYMs. Since it's happening on their services, Fabric has no way to upload these automatically. Apple does provide the dSYMs through Xcode or iTunesConnect. Since we can't access those dSYMs (we would need your Apple developer credentials and we don't want to have them), you do need to get the dSYMs from Apple and upload them to Fabric for each release through Apple or Testflight. You can also use the upload-symbols script to upload them in bulk. The upload-symbols script will also work from CI machines.
When a crash comes into Fabric, we look if we have the dSYM needed to symbolicate the crash. If we don't, we will alert you via the dashboard and your Fabric app settings page. If a crash has a missing dSYM, we will store it for 7 days. If the missing dSYM is not uploaded in this time, then we will drop the crash and not process it. If the missing dSYM is uploaded, then the crash is enqueued to be processed and it can take between a few minutes to a few hours to process and display.
With that said, the best way to handle this is to use the upload-symbols script to get the symbols to us even if there isn't a reported missing dSYM yet, so that we have the symbols when a crash happens. If we have the dSYM when the crash is reported, the crash will be processed within a few seconds (on average).
An alternate approach is to use fastlane's refresh_dsyms command to get the dSYMs and upload them.
Upvotes: 4