I have just installed Crashlitycs using this official instruction.
I have set Debug Information Format is “DWARF with dSYM File” for both Debug and Release and disabled Bitcode (some people wrote that it could help):
AppDelegate:
Fabric.sharedSDK().debug = true Fabric.with([Crashlytics.self])
To simulate a crash I use
Crashlytics.sharedInstance().crash()
and
var ggg: Int! print(ggg)
Crashlitics collects some information about sessions. For example it updates bundle versions info:
So connection with Crashlitics works. However crash information is empty:
I am using XCode 8 and iOS 9/10. What I am doing wrong?
EDIT:
I have tested it on simulator and device without XCode debugger connection (i.e. launching from sumulator/device screen)
Finally I have received some Crashlytics reports after 7-8 hours after crashes. I expected them earlier because according to documentation:
Within a few minutes, you should see the crash appear on your Fabric Dashboard.
However I did not receive all crashes I was waiting for. During my experiments I have tried different ways to initialise Crashlytics:
Fabric.with([Crashlytics.self]) and Fabric.with([Crashlytics.self()])
Could it be the reason? I have also found the similar unanswered question.
In January 2017, Crashlytics and Fabric were acquired by Google. In September 2018, Google announces that Fabric will be deprecated and developers should use Crashlytics via Firebase.
In addition to automatically reporting your app's crashes, Crashlytics lets you record non-fatal exceptions and sends them to you the next time your app launches. Note: Crashlytics only stores the most recent eight exceptions in a given app session.
Checked the following terms,
Make sure Crashlytics SDK line is after all other 3rd-party SDK lines. (it needs to be last one called in your appDidFinishLaunching method.)
Force a crash and then relaunch the app. Xcode must be disconnected to stop it from intercepting the crash report. To disconnect Xcode, follow the instructions here.
If you're using [Crashlytics sharedInstance] crash]; to test crashing, make sure it's not in the appDidFinishLaunching method.
These are already mentioned in support section, Here is additional ones -
if yes, Then do the following step
This will show all the associated UUID, And if any listed UUID matched with the one mentioned in missing dSYM id then just compress the dSYM folder and upload it on crashlytics Missing dSYM segment.
This step is important cause sometimes the dSYM file we extract from organizer doesn't contain correct UUID. And after uploading the wrong one we wait for its updations. So it's better to make sure you are uploading the right dSYM file.
Other than aforementioned things, Bitcode property and Debug Information Format in Build Settings also affect the crash reporting.
You need to run the app but not from Xcode.
If you are using a device, just launch the app without usb connected. If you are using simulator, stop the running of the app from Xcode. Then open it again via mouse click instead.
Next, navigate to the buttonPress
or function
that will call the Crashlytics.sharedInstance().crash()
.
Then reopen the app again after crash.(This could be connected to console if you want) This step is important because crashlytics save the crash report just before the app is terminated. The next time you open the app, it will then post the report up to crashlytics.
The docs here actually explain the troubleshooting issue as well.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With