That's a good question. There are many controls that affect the availability of debugging information for your application. This is confusing, and people constantly stumble over it.
Here are my recommendations:
- always check the "include characters" field when sending apps to Apple.
- always delete final executables (.app, .framework)
- never crash your static libraries if you have
- you want Apple crash reports to work even if you don't plan on looking at it.
In this configuration, your dSYMs created locally or by Apple will contain the debugging information necessary for Crashlytics and Apple to work. This is critical . You use Apple characters when using bit code. If you do not, you will probably never be able to see symbolic crashes for this version of your application.
There are, of course, some good reasons why you might not want to share characters with Apple. One of them is you want to confuse your code. I know a few applications that do this. Of course, this is a compromise, because it makes symbolism much more complicated or even impossible, depending on the obfuscation system.
There are also reasons why you may not want to remove your executable files. First, you rely on a third-party crash reporting system that does not support server-side symbology. This is getting smaller and smaller as far as I know, but this is what you need to know about.
Finally, you definitely want Apple's crash reporting system to work, even if you never plan to use it. Apple can more reliably fix more failures than any third-party solution. I'm sure this is also invaluable for Apple's internal work. It definitely has limitations, but it really doesn't cost anything. Therefore, keep it in working condition, if only for any reason, than to be able to look at it in the future.
source share