Xcode打包未生成DSYM文件

25

对于我的大多数项目,我会设置一个“归档”方案来归档我的项目,并创建一个IPA和DSYM文件,以便我可以上传到TestFlight。

然而,我正在处理一个更复杂的项目,该项目工作区中有几个目标,还有很多静态链接库。我已经为所有配置项遍历了每个目标,并进行了以下设置:

  • 部署后处理->NO
  • 剥离链接产品...->No
  • 剥离Debug... -> No
  • 生成调试符号->是
  • 调试信息->DWARF with DSYM

我使用的是Xcode 4.5.2。我已经在许多项目中完成了这个步骤,没有遇到问题。但是这是第一个似乎阻止了DSYM文件生成的项目。

无论我尝试什么,我的归档构建都无法生成.DSYM文件。


在Xcode 10.0中,dSYM文件存储在Derived Data中 - 如此处所述,请检查报告导航器中的归档日志(cmd+9):https://dev59.com/62Yq5IYBdhLWcg3w7E-w#14119376。在我的情况下,dSYM文件位于此处:`/Users/USER_NAME/Library/Developer/Xcode/DerivedData/PROJECT_NAME-amlcnmxbghcsrcfrhbmvsfyjbins/Build/Intermediates.noindex/ArchiveIntermediates/PROJECT_NAME/BuildProductsPath/TARGET_NAME-iphoneos/APP_NAME.app.dSYM` - derpoliuk
7个回答

8

问题识别

正如@belsokar所建议的那样,检查报告导航器。 在我的情况下,dSYM文件没有生成,并且没有相应的行,比如"Generate Appname.dSYM ...in {path}" 但是已经安装了Fabric,它记录了dSYM文件不存在的事实:

no dsym

只需按"dSYM"过滤报告导航器。

修复

在我的情况下,我只需要做我被要求做的事情:

DEBUG_INFORMATION_FORMAT 应该对所有配置设置为 dwarf-with-dsym。

此外,可能会发现dSYM文件正在意想不到的位置生成。检查环境变量,特别是DWARF_DSYM_FOLDER_PATHDWARF_DSYM_FILE_NAME

要将dSYM嵌入应用程序包中,只需将DWARF_DSYM_FOLDER_PATH设置为$(CONFIGURATION_BUILD_DIR)/$(EXECUTABLE_FOLDER_PATH),将DWARF_DSYM_FILE_NAME设置为$(EXECUTABLE_NAME).dSYM

检查

现在构建应该为您的目标创建dSYM

generate target.dSYM


7

xcode -> 产品 -> 存档

您将看到“存档”窗口

1.选择您的应用程序中的任何存档,右键单击它,然后选择“在Finder中显示”

2.您将看到aapname.xcarchive文件。右键单击它并选择“显示包内容”

3.您将看到dSYMs文件夹。打开并获取.dSYM文件

:)


4
仅当dSYM已生成并位于预期位置时,此适用。 - nikans
5
需要删除答案。问题不是“在哪里找到dSYM?” - Ash
2
@Ash 如果你不喜欢没关系。但是它可以帮助其他用户,这就是为什么他们给了我点数的原因。 - balkaran singh
我本来也想加同样的答案,只是点了一个+1 :) - Sasho

6

1
困惑于此... "指定二进制文件是否接收部署后处理。部署后处理包括剥离二进制文件,并设置其文件模式、所有者和组。" ... 这不是意味着将其设置为YES会剥离这个二进制文件吗? - James Boutcher
1
有人能否描述一下它如何与dSYMs相关吗? - Valentin Shergin

0

DWARF_DSYM_FILE_SHOULD_ACCOMPANY_PRODUCT=YES 将 .dsym 文件复制到了我的项目归档中。

此外,我没有更改默认的 DWARF_DSYM_FOLDER_PATHDWARF_DSYM_FILE_NAME 值。


0

如主要答案中所述,DWARF_DSYM_FOLDER_PATH的值决定了dSYMs的存储位置。默认值为$(CONFIGURATION_BUILD_DIR),因此如果您有自定义的CONFIGURATION_BUILD_DIR设置,则可能会更改DWARF_DSYM_FOLDER_PATH,导致dSYMs未被复制到.xcarchive中。我还发现自定义的SYMROOT设置也可以更改路径,可能还有其他一些设置覆盖。

通常在归档构建期间,CONFIGURATION_BUILD_DIR和DWARF_DSYM_FOLDER_PATH值将位于“ArchiveIntermediates”文件夹下的某个位置,其中的内容可能会被复制到最终的.xcarchive中。

如果您可以避免覆盖这些设置,那么这可能是更好的选择,否则可能还需要覆盖DWARF_DSYM_FOLDER_PATH以指向正确的位置,或者需要一个后置构建步骤来将.dSYM文件夹从它们最终到达的位置复制到XXX.xcarchive/dSYMS文件夹中。


0

一些研究技巧。

  • 检查日志导航器。我进入了这个视图(我很少使用,所以我经常忘记它的存在),然后我意识到.DSym文件实际上正在被创建。

  • 检查构建目录配置,看看它们是默认还是自定义...在我的情况下,它们是自定义的,所以它们没有被放置在典型的默认位置。


1
日志导航器也被称为报告导航器。 - Jarson
你所说的“检查构建目录配置”具体是什么意思?我在一个多目标项目(Qt)上也遇到了同样的问题。DSyms已经被创建,但无法上传到AppStore。你最终是如何解决这个问题的? - Konstantinos Gaitanis

-1

这是帮助我的解决方法:

  1. 登录iTunes Connect并进入“我的应用程序”。
  2. 单击您要下载dSYM的应用程序。转到“活动”选项卡。
  3. 单击要展开的版本,以显示所有已上传的构建。
  4. 单击您想要的构建。
  5. 将显示有关该构建的详细信息,并在“包括符号”标题下的右下角提供下载dSYM的选项。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接