.dSYM文件是如何创build的?

我正在和另外一个开发人员一起开发一个应用程序,他们只是把一个发布版本提交到了在他们电脑上构build的app store。 为了在我的机器上构build(属于同一个git commit),我必须修改我们在XCode项目中使用的库之一。 我对XCode项目文件所做的任何更改都会改变dSYM吗? 如果我能够在不修改XCode项目文件的情况下进行构build,则dSYM文件是否相同?

一个dSYM文件是一个“debugging符号文件”。 在项目的构build设置中启用“Strip Debug Symbols”(剥除debugging符号)设置时生成。

启用此设置后,将从生成的编译二进制文件中删除对象的符号名称(尝试防止黑客/破解者对您的代码进行反向工程,以及其他二进制大小优化等)。

每次编译应用程序时,dSYM文件都可能会更改(可能每次都是由于date标记),而与项目设置无关。

它们对于重新标记您的崩溃报告很有用。 如果没有二进制文件,你将无法读取任何崩溃报告,而不必先重新表示它们。 如果没有dSYM,崩溃报告将只显示对象和方法的内存地址。 Xcode使用dSYM将符号放回到崩溃报告中,并允许您正确读取它。

理想情况下,你的dSYM文件不应该在你的git仓库中被跟踪。 就像其他在构build中发生变化的二进制文件一样,将它们保存在源代码pipe理中也是没有用的。 但是,如果这样说的话,为每个分布式版本(testing版,新闻发布版,app store发行版等)保留一些安全的dSYM文件,以便能够标记出可能获得的任何崩溃报告,这一点非常重要。 当您使用“存档”选项时,Xcode会自动为您执行此操作。 创build的存档包含您的应用程序和它的dSYM,并存储在Xcode的派生数据目录中。