Xcode Bitcode, Include Symbols settings effect on dSYM generation

旧城冷巷雨未停 提交于 2019-11-30 05:25:59

This is a good question. There are numerous knobs that affect the availability of debug symbol information for your app. It's confusing, and people are constantly tripped up by it.

Here are my guidelines:

  • always check the "include symbols" box when submitting apps to Apple
  • always strip your final executables (.app, .framework)
  • never strip your static libraries, if you have any
  • you want Apple's crash reporting to work, even if you don't plan to look at it

With this configuration, your dSYMs, produced locally or by Apple, will contain the debug information necessary for both Crashlytics and Apple's reporter to work. It is critical you share symbols with Apple when using bitcode. If you do not, it is likely you will never be able to see symbolicated crashes for that version of your app.

There are, of course, some valid reasons why you might not want to share symbols with Apple. One is you want to obfuscate your code. I'm aware of a few apps that do this. Of course, this is a trade-off, because it makes symbolication much harder, or even impossible, depending on the obfuscation system.

There are also reasons why you might not want to strip your executables. One is that you rely on a 3rd party crash reporting system that does not support server-side symbolication. This is less and less common, as far as I know, but it is something to be aware of.

Finally, you definitely do want Apple's crash reporting system to work, even if you never plan on using it. Apple's system is able to capture more crashes more reliably than any 3rd-party solution could. I'm sure it is also invaluable for Apple's internal work. It definitely does have limitations, but really doesn't cost you anything. So, keep it working, if for no other reason than to have the option to look at it in the future.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!