Xcode - 没有可供下载的dSYM文件

139

我想从中提取dSYM文件,但当我在组织者中点击"下载dSYMs..."时,出现以下信息:"没有可供下载的dSYMs。"

我正在使用由Cocoapods 0.39生成的工作区,Xcode版本为7.2。

如何获取它们?

输入图像描述


你能解决这个问题吗?我遇到了同样的问题,而且包内的 dSYM 文件缺少我需要的那些。 - jhk
这里也有同样的问题...如果你有任何进展,请在这里发布! - Jordan Smith
@Jordan 当然。你那边有什么想法吗? - Felipe Peña
@FelipePeña 嗯,当我检查 .xcarchive 时,我注意到里面已经有一个 DSYM 文件夹了。但是使用它来解析崩溃日志并没有成功... 我在想,如果应用程序是使用 dsym 文件构建的,然后当 iTunes Connect 重新编译并生成新的 dsysm 或者其他方式时,我们无法下载,因为出于某种原因我们已经有了 dsym 文件...? - Jordan Smith
从iTunesConnect下载必须启用Bitcode。我的答案已添加到下面的列表中。 - Jacksonkr
显示剩余8条评论
8个回答

334

无位码

这是一个 GIF 图片,它展示了如何获取 DSYMS,压缩并上传到 Crashlytics/Fabric。

enter image description here

  1. 点击窗口 > 组织者
  2. 右键单击你的应用 > 在 Finder 中显示
  3. 右键单击第一个 .xcarchive 文件 > 显示包内容

启用位码

你需要从 App Store Connect 下载 dsyms。最简单的方法是使用 fastlane 工具。

lane :refresh_dsyms do
    download_dsyms                  # Download dSYM files from App Store Connect
    
    upload_symbols_to_crashlytics   # Optional for uploading to Crashlytics
end

1
但是为什么Xcode的下载选项不起作用呢?你有什么想法吗? - Sazzad Hissain Khan
1
我需要在/dSYM/文件夹中运行以下命令进行压缩:zip -r SymbolFiles.zip *.dSYM - Andrew Schreiber
2
问题来自于“下载 DSYMs”按钮。为什么点击按钮时它没有开始下载?为什么我们必须手动获取它? - Zulqarnain Mustafa
1
太好了!谢谢。 - J. Fdez
1
非常感谢您。 - Zubeir
显示剩余6条评论

48

我认为@Jordan是正确的——似乎iTunes Connect正在使用位码重新编译应用程序,以便UUID发生更改,并且.xcarchive中的dSYM实际上无法用于符号化应用程序(这似乎是一个新进展)。

您可以从iTunes Connect下载正确的dSYM。登录后,转到“我的应用程序”,选择您的应用程序,然后点击顶部的“活动”选项卡。点击相关版本,假设该应用程序一开始就是带有符号的,则应该会看到“下载dSYM”的选项。

您获得的文件名为dSYMs(没有扩展名),但实际上它是一个zip文件。添加.zip扩展名,解压缩,然后您会找到其中的dSYM。

(本周我需要这样做,因为Crashlytics抱怨缺少dSYM。)


3
我需要先将我的应用提交到iTunesConnect以获取dSYM文件并上传到fabric.io吗? - Shamsiddin Saidov
34
我的应用目前已经在应用商店上架,在iTunesConnect上显示“包含符号:是”,但是却无法下载 .dSYM 文件。 - Jacksonkr
@swalkner 我记不清了。我想说的是,我发现我的情况无法修复 :/ - Jacksonkr

24

实际上,现在不能从iTunesConnect下载dSYM文件。有另一种方法可以获取该文件。

Xcode -> 窗口 -> 组织器(Organizer) -> 在Finder中显示xcarchive文件 -> 右键单击您的xcarchive文件 -> 选择“显示包内容”

现在您可以看到您的dSYM文件了。


今天似乎可以了... 当您选择所需的构建时,会显示“下载dsym”按钮。 - Whirlwind

22

必须启用bitcode

如果您想从iTunesConnect获取您的dSYM

  • 构建设置 > 构建选项 > 启用Bitcode >
  • 选择设备“通用iOS设备”(或其他适用设备)
  • 归档

从存档中导出时

  • 检查包括应用程序符号,以接收来自Apple的符号化崩溃日志
  • 检查包括位码

使用应用程序加载器上传

一旦您的应用程序已成功上传到iTunesConnect,您可以转到iTunesConnect.com > MyApps > [YOUR APP] > Activity > All Builds > [YOUR BUILD] > General Information > Includes Symbols > 下载dSYM

#xcode8.2.1 #osx10.12.6


10
真实故事。如果您没有启用位码,苹果只会显示“包含符号:是”,而没有下载链接。 - Dan Rosenstark
1
对我来说,在上传到iTunesConnect之后,我必须使用Xcode的Organiser并单击“下载dSYM”,它没有给出错误,但显然什么也没做(没有文件出现在任何地方??),但是然后在iTunesConnect中,“包含符号Yes”旁边出现了蓝色链接。这是一个迷宫。 - legoblocks
一些链接在App Store Connect中似乎没有出现,即使启用了dSYM和位码。仅包含符号:是的。 - piotr_cz

11
我在https://twittercommunity.com/t/not-matching-uuid-bitcode/61000/2找到了解决方案。

“Crashlytics报告缺少UUID的dSYMs,格式如下:83889b11dedd363c8e5ee56233bcc90c。正如我所说,我遵循了指南7,但是我找不到那个UUID。所以我进入iTunesConnect并执行以下操作:

  • 选择应用程序
  • 在顶部选择Activity选项卡
  • 选择Crashlytics投诉的构建版本
  • 单击Download dSYM蓝色链接

下载的文件名为dSYM没有扩展名,但实际上是一个zip文件。因此,我添加了zip扩展名并解压缩了它。在未压缩的文件夹中,我找到了许多dSYM文件,其中一个称为83889B11-DEDD-363C-8E5E-E56233BCC90C.dSYM,与Crashlytics报告缺失的UUID(即使格式不同)相匹配。请注意,此文件不在xcarchive中。

希望这可以帮到你!"

在我的情况下,它像魔法一样起作用。


4
我在iTunes Connect中没有看到那个蓝色链接。我记得在另一个帖子中看到了这个回复,你知道具体在哪个部分吗? - Felipe Peña
@FelipePeña iTunesConnect -> 我的应用程序 -> "您的应用程序" -> 活动 -> 所有构建 -> 选择构建 -> 构建详细信息 - Phil Andrews
2
@spacemonkey 那里找不到任何东西。 - atulkhatri
2
对我来说也是一样,没有下载dSYMs的链接。 - mixable
我认为下载dSYMs已被移除。我在iTunes Connect中再也看不到它了 :( - spartygw
1
浪费了一半的时间来寻找问题的根源。最后发现苹果开始使用 .dsm 扩展名来命名 dSYM 文件。按照 @Davide 的建议将其重命名为 .zip。谢谢,伙计! - IvanMih

10

在我的情况下,我无法在归档文件夹中找到我的应用程序的dSYM文件。如果你也遇到了这个问题,请前往你的项目构建设置 > 构建选项 > 调试信息格式,并确保它被设置为DWARF with dSYM file


5
这是一条提示信息:“已设置,仍然出现“未找到版本 x.x 构建 xx 的 dSYM 文件”。 - Jacksonkr
我曾经遇到过同样的问题,但是改变上述设置解决了这个问题,谢谢! - Peter Ivanics

3
如果包内容中的dSYMs文件夹为空(Ted的回答),请尝试检查以下内容:
  • 构建设置 > 构建选项 > 启用位码 设置为 (Jacksonkr的回答)
  • 构建设置 > 构建选项 > 调试信息格式 设置为 带有dSYM文件的DWARF (daisura99的回答)
请检查这两个设置。 然后在显示包内容 -> dSYMs 文件夹中,这次应该可以找到一些内容。
在我的情况下,它起作用了。

1

根据最新更新,您无需手动上传dSYM文件,自动上传将通过以下过程完成。

第一步:前往目标->构建设置->搜索“调试信息格式”。将所有构建类型的调试信息格式设置为DWARF with dSYM File

enter image description here

第二步:前往Build Phases->展开Run Script并添加脚本和输入文件

在脚本中:

"${PODS_ROOT}/FirebaseCrashlytics/run"

在输入文件中:

${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}
    $(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)

示例截图:

输入图像描述

步骤3: 最后添加一个脚本来上传 dSYM 文件

${PODS_ROOT}/FirebaseCrashlytics/upload-symbols -gsp 
      ${PROJECT_DIR}/Your_path/GoogleService-Info.plist -p ios 
      ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}

enter image description here

在脚本的第二行${PROJECT_DIR}/Your_path/GoogleService-Info.plist -p ios中,用你的项目路径替换“Your_path”,意思是你的应用程序模式名称。

如果在运行应用程序时出现错误,请参考我的答案Xcode 10.2.1 Command PhaseScriptExecution failed with a nonzero exit code

错误:

 Command PhaseScriptExecution failed with a nonzero exit code

1
第三步在我们安装pod时运行脚本,但当我们使用包时,需要编写哪个脚本来上传XCode中的dSYM文件? - S K
@ S K,我不知道,去看看其他答案吧。 - Naresh

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