对于我的大多数项目,我设置了一个“存档”方案来存档我的项目,创建一个可以上传到 TestFlight 的 IPA 和 DSYM。
但是,我正在开发一个更复杂的项目,该项目在项目工作区中有多个目标,有很多静态链接库。 我已经检查了每个目标并为所有配置设置了以下内容:
我使用的是 Xcode 4.5.2。 我已经为许多项目做到了这一点,没有出现任何问题。 这是第一个似乎阻止创建 DSYM 文件的地方。
无论我如何尝试,我的存档构建都不会生成 .DSYM 文件
找出问题
正如 @belsokar 建议的那样,检查报告导航器。 就我而言,dSYM 文件尚未生成,并且没有类似
"Generate Appname.dSYM ...in {path}"
的相应行
但是已经安装了 Fabric,并且它记录了 dSYM 文件不存在的事实:
只需通过“dSYM”归档报告导航器即可。
修复
就我而言,我只需要做我被要求的事情:
所有的 DEBUG_INFORMATION_FORMAT 应设置为 dwarf-with-dsym 配置。
此外,dSYM 文件可能是在意外的地方生成的。检查环境变量,尤其是
DWARF_DSYM_FOLDER_PATH
和DWARF_DSYM_FILE_NAME
。
要将 dSYM 嵌入到应用程序包中,只需将
DWARF_DSYM_FOLDER_PATH
设置为 $(CONFIGURATION_BUILD_DIR)/$(EXECUTABLE_FOLDER_PATH)
并将 DWARF_DSYM_FILE_NAME
设置为 $(EXECUTABLE_NAME).dSYM
检查中
现在构建应该为您的目标创建 dSYM
xcode - > product -> Archive
您会看到档案窗口
1 选择应用程序的任何存档,右键单击它,然后选择在查找器中显示
2 您会看到 aapname.xcarchive 文件,右键单击它并选择显示包内容
3 你看到 dSYMs 文件夹,打开它并获得
.dSYM
文件
:)
一些研究技巧。
检查日志导航器。 我进入这个视图(我很少使用这个视图,所以我倾向于忘记它的存在),我意识到 .DSym 文件实际上正在创建。
检查构建目录配置,看看它们是默认的还是自定义的...在我的例子中,它们是自定义的,所以它们没有被放置在典型的默认位置。
正如主要答案中提到的,
DWARF_DSYM_FOLDER_PATH
的值决定了 dSYM 的去向。 默认值为 $(CONFIGURATION_BUILD_DIR)
,因此如果您有自定义 CONFIGURATION_BUILD_DIR
设置,它可以更改 DWARF_DSYM_FOLDER_PATH,以便 dSYM 不会被复制到 .xcarchive 中。 我还发现自定义 SYMROOT
设置也可以更改路径,并且可能还覆盖其他一些设置。
通常在存档构建期间,CONFIGURATION_BUILD_DIR 和 DWARF_DSYM_FOLDER_PATH 值将位于“ArchiveIntermediates”文件夹下的某个位置,其中的内容可能会复制到最终的 .xcarchive。
如果您可以避免覆盖这些设置,那可能会更好,否则 DWARF_DSYM_FOLDER_PATH 可能也必须被覆盖以指向正确的位置,或者需要构建后步骤来从 .dSYM 文件夹结束的位置复制它们到 XXX.xcarchive/dSYMS 文件夹。
DWARF_DSYM_FILE_SHOULD_ACCOMPANY_PRODUCT=YES
将 .dsym 文件复制到我的项目中的存档中。
此外,我没有更改默认的
DWARF_DSYM_FOLDER_PATH
或 DWARF_DSYM_FILE_NAME
值。
这是解决方法帮助了我: