【问题标题】:Firebase Crashlytics: Upload missing dSYMs to see crashes from 1 versions.(iOS)Firebase Crashlytics:上传缺失的 dSYM 以查看 1 个版本的崩溃情况。(iOS)
【发布时间】:2018-06-26 01:52:35
【问题描述】:

错误消息: 上传缺少的 dSYM 以查看 1 个版本的崩溃情况。 受影响的版本:1.0 (1)

我正在尝试在我的 iOS 项目中实现 Firebase Crashlytics。我根据Firebase Crashlytics Doucmentation 进行了所有设置。单击按钮时手动执行崩溃,以查看 crashlytics 是否正常工作。

@IBAction func onTestCrashButtonClick(_ sender: UIButton) {

    Crashlytics.sharedInstance().crash()

}

但是当我尝试在 firebase 控制台中查看错误报告时,它会显示类似于此图像的内容。

在阅读Get Deobfuscated crash reports 之后,我只是将调试信息格式设置为 DWARF 和 dSYM 文件,如下所示,但问题到现在还没有解决。

【问题讨论】:

  • 如果只有一个选项可以清除此警告,直到任何进一步的 dSym 丢失,那将是非常好的。
  • 如果您仍然遇到这些问题,请查看此答案:stackoverflow.com/questions/35159244/…
  • 对于最新的更新,每个人都应该关注@Dipak 的回答,它正在工作......

标签: ios firebase crashlytics deobfuscation


【解决方案1】:

将 DSYMS 文件上传到 Firebase Crashlytics 的唯一且简单方式。 (2021 年 4 月至 2021 年

  1. 从 App Store 下载 appDsyms 存档

    1.1 登录:https://appstoreconnect.apple.com

    1.2 转到:MyApps -> 选择您的应用 -> 试飞 -> 选择 App Store 中的应用版本 -> 构建元数据 -> 包含符号(右侧) -> 按:下载 dSYM。

  2. 打开终端,按此顺序在终端上拖放3个文件:

    2.1 拖放:"upload-symbols" 可以在 /project/Pods/FirebaseCrashlytics/upload-symbols

    2.2 写“-gsp

    2.3 拖拽:“GoogleService-Info.plist”可以在/project/GoogleService-Info.plist找到

    2.4 写“-p ios

    2.5 拖放:“appDsyms”文件夹(未归档,zip 文件可能不起作用!)通常在下载文件夹/Users/username/Downloads/appDsyms

    2.6 按Enter

在终端中完整的命令应该包括-gsp-p ios,完整的命令看起来像这样:2.1 -gsp 2.3 -p ios 2.5

/project/Pods/FirebaseCrashlytics/upload-symbols -gsp /project/GoogleService-Info.plist -p ios /Users/username/Downloads/appDsyms

设置完毕,等待终端上传!

终端示例:

-

一种通过拖放到终端来获取文件或文件夹位置的方法:

-

AppStore Connect,下载 dSYM:

【讨论】:

  • 拯救我的一天,兄弟。谢谢!
  • 我这样做并在控制台中收到Successfully uploaded Crashlytics symbols 消息。但红色错误仍在我的 Firebase 控制台中
  • 谢谢,这是我发现上传这些文件的最佳方式。我认为以前很棒,但这个新版本太可怕了
  • App Store Connect 中没有 Activity。我以这种方式下载了 dSYM:My App -> Build -> Build Metadata -> Include Symbols (Yes) |下载 dSYM。
  • @Hibbem 很高兴听到这个消息。我会更新答案。谢谢!
【解决方案2】:

我遇到同样的问题已经有一段时间了,我终于能够解决它,我想我会分享对我有用的方法:

就上下文而言,我正在开发一个使用多个 Cocoapods 的大型应用程序。

我在我的 Firebase Crashlytics 页面上发现了同样的红色横幅,在关注了他们所有的 instructions 之后,我仍然看到它。

我尝试了几次“通过终端手动存档/查找.dSYMs/上传”解决方案,但无济于事。

最后,我决定从 iTunesConnect 下载 .dSYM。
[Your App] > Activity > [Desired Build Number] > 下载 dSYM

然后我手动上传了这些 .dSYM,几分钟内 Firebase Crashlytics 就很高兴并显示了崩溃报告。

更新
Google 在 Firebase Crashlytics 仪表板上添加了一个时髦的 .dSYM 上传功能,不再从终端上传。

于 2020 年 3 月 16 日编辑。

Google 即将移除 Firebase 信息中心的上传功能。应从终端使用上传脚本将 dSYM 上传到 Firebase。请参阅 Google 的说明 here

【讨论】:

  • 从 iTunesConnect 下载 .dSYM 确实很有帮助。谢谢
  • 为什么 Google 决定在他们的 Firebase UI 中删除上传功能... -_- 非常方便!!
  • 我们如何使用上传脚本?谁能举个例子。
  • 什么是上传脚本?怎么用?
  • 为什么firebase删除了控制台本身上传dysm文件?运行脚本对我没有帮助
【解决方案3】:

Fabric Crashlytics 更新为 Firebase Crashlytics SDK 后。我也遇到了同样的问题(上传 1 个丢失的 dSYM 需要处理 5 个崩溃)。我在以下步骤的帮助下解决了:

第 1 步: 打开 Target-> Build Settings -> 搜索“调试信息格式”。 将 Debug Information Format 设置为 DWARF with dSYM File 你的构建类型。

第 2 步-: 打开运行脚本部分并输入脚本

“${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}

【讨论】:

  • 天哪。你救了我的命。我的英雄。
  • 我的主要问题是由于缺少 dSYM,我不再收到来自 Crashlytics 的重要电子邮件。 Crashlytics 仅在我手动上传 dSYM 后识别崩溃。这意味着除非我记得每天/每周上传 dSYM,否则我不会收到任何通知。您的解决方案是否支持这项工作?意味着不再有红色横幅,并且在实施您的解决方案后我会收到崩溃报告?
  • @ErimFranci 此解决方案可能会解决您的红色横幅问题。正确设置后,如果未启用,则需要启用 Crashlytics 电子邮件警报通知。
  • 如果我们使用 Swift 包管理器而不是 CocoaPods,谁知道我们应该在第 3 步中使用哪个 Crashlytics 路径?
  • @DEVIGNR ${BUILD_DIR%Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/upload-symbols -gsp ${PROJECT_DIR}/Your_path/GoogleService-Info.plist -p ios ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
【解决方案4】:

如果一切正常,您可以在没有遗漏任何步骤的情况下完成所有设置,然后您还会在 firebase 中看到 Upload missing dSYMs to see crashs 错误。

(2020 年 6 月 1 日至 2020 年)

仅从 iTunesConnect 下载 .dSYM 并将其上传到 Firebase

Google 即将移除 Firebase 信息中心的上传功能

直接从您的终端运行脚本以上传 dSYM

/path/to/pods/directory/FirebaseCrashlytics/upload-symbols -gsp /path/to/GoogleService-Info.plist -p ios /path/to/dSYMs

经过两天的长期研究并尝试了很多解决方案,但没有人为我工作:(

但是通过这个解决方案 Firebase Crashlytics 很高兴并在几分钟内显示崩溃报告。

【讨论】:

  • 即使上传后问题还是一样.....脚本没有抛出任何错误
  • @Satyam 你能通过终端上传 dSYM 吗?
  • 我可以上传命令中提到的 dSYM 文件。但我仍然没有在 Crashlytics 网页中看到任何更新。
  • @Satyam 您在 Crashlytics 仪表板上看到了什么?我的意思是你有没有看到你的应用版本或其他任何东西?
  • @SaikumarReddy 这里/path/to/等于你你的项目目录路径
【解决方案5】:
Pods/Fabric/upload-symbols -gsp APP/Resources/GoogleService_Info.plist -p ios /Users/ME/Desktop/APP.app.dSYM

这是我最近用来将我的 dsym 上传到 Fabric 的。我使用的是带有 crashlytics SDK 的结构,而不是 firebase one(目前处于测试阶段)。只需将您的应用名称替换为“APP”,并将您的 DSYM 路径替换为“/Users/ME/Desktop/APP.app.dSYM”。

【讨论】:

  • 请您添加解释
  • Firebase 不再允许通过上传来添加 DSYM 文件,上述命令适用于我通过在项目的根文件夹打开终端并提供 google 服务 plist 和您的 dsyms 目录的路径来上传 DSYM 文件。跨度>
【解决方案6】:

就我而言,我做了以下事情并且效果很好:

  1. 在构建阶段 -> 运行脚本中选择“仅在安装时运行脚本” (外壳 = ${PODS_ROOT}/Fabric/run)

  2. 构建应用程序

  3. 现在您可以在路径中找到 .dsym 文件, /Library/Developer/Xcode/DerivedData/XXX-arctjcalvfslmbakanpyivuuxjmm/Build/Products/Release-iphoneos

  4. 将压缩的 .dsym 文件上传到 Firebase 控制台

  5. 几分钟后,您可以找到崩溃报告

注意:

  • 我在导出 ipa 文件(Adhoc 或 Appstore)时禁用了位码
  • 如果您需要启用位码的 ipa,请从 iTunes connect 下载 dsym 文件

【讨论】:

  • 我在 /Library/Developer/Xcode 文件路径中没有得到任何文件
  • 如何上传 dsym 到 crashlytics?
【解决方案7】:

查找并上传 Crashlytics 的调试符号

  • 复制丢失的 dSYM 的 UUID 并运行 mdfind "com_apple_xcode_dsym_uuids == <UUID>" 在终端窗口上。
  • 上面的命令会返回类似.../build/ios/Release-Staging-iphoneos/your.app.dSYM
  • 压缩包并使用 Firebase 信息中心上传到 Crashlytics

等待 10 到 15 分钟,然后崩溃开始出现在控制台上。

【讨论】:

  • 这为我返回了 0 个结果.. 怎么办?
  • 尝试从您的主目录运行它,如果这会有所不同,并在从网络复制时检查空格和特殊字符。
【解决方案8】:

2021 年 3 月

itunesconnect 上不再有活动选项卡,因此您必须获取 Dsyms 文件

  1. 转到 iTunes 连接。
  2. 我的应用程序。
  3. 选择特定的应用程序。
  4. 导航到 testflight。
  5. 选择要为其生成 Dsyms 文件的构建。
  6. 点击构建元数据。
  7. 搜索“包含符号”,然后点击下载。

然后在下载后在您的终端中运行此代码,用正确的文件路径替换引用的部分。

/path/to/pods/directory/FirebaseCrashlytics/upload-symbols
 -gsp /path/to/GoogleService-Info.plist -p ios /path/to/dSYMs

【讨论】:

  • 谢谢,这是当前的解决方案!似乎 dsyms 现在隐藏在 TestFlight 部分中 - 我希望 Apple 能让这些事情更加明显。我想这需要为应用程序的每个新版本完成?如果没有这个答案,永远不会想到这一点。
  • 我没有看到下载按钮 :(
  • @ericlong 您是否能够导航到试飞并选择要为其生成 Dsyms 文件的特定构建?如果您刚刚使用浏览器搜索在页面上查找“包含符号”,那么您应该会在此突出显示的文本下方看到一个下载按钮。
  • @babatundeadewole 转到 iTuneConnect -> 选择应用程序 -> TestFlight -> 选择构建 -> 构建元数据然后我搜索包含符号,我只看到“是”,没有下载按钮。其他地方有情况吗?
  • 看到和@ericlong 一样的东西——我的应用不使用 Bitcode,我不是代理,但我是 App Store Connect 中的管理员。这 2 个事实是否会影响从 App Store Connect 下载 dSYM 的能力?澄清一下,尽管没有使用 Bitcode 并使用 google 脚本手动上传 dSYM,但我仍然在 Crashlytics 中看到臭名昭著的红色横幅。
【解决方案9】:

我也遇到了同样的问题。 基本上我错过了一个简单的步骤,这就是 Firebase 脚本无法上传 dSYM 文件的原因。

解决问题的步骤。

  • 点击项目文件
  • 选择目标
  • 转到构建设置
  • 搜索“调试信息格式”
  • 对于所有方案,将设置更改为“带有 dYSM 文件的 DWARF”

  • 现在再次运行项目
  • firebase 仪表板的 dYSM 错误应该去...

【讨论】:

    【解决方案10】:

    如果您使用动态库是您的项目使用可可豆荚或任何其他工具,那么 Firebase 需要重复符号文件来定位库中的错误代码。如果您想了解更多关于 dSysms 的信息,请阅读:https://stackoverflow.com/questions/3656391/whats-the-dsym-and-how-to-use-it-ios-sdk

    要查找 dsysm 文件夹,您首先需要在 Firebase 上报告崩溃的 .ipa 文件。就您而言,我想您正在模拟器上运行以进行测试。要获得 IPA,请按照以下步骤操作:How to create ipa in xcode 6 without Apple Developer account?

    当您到达 .iPA 后,右键单击并选择显示包内容,或点击此链接:iphone: Where the .dSYM file is located in crash report

    在那里你会找到系统文件夹。将此文件夹上传到 firebase crashalytics。

    希望这会有所帮助!

    【讨论】:

    • 那么在我们使用 CocoaPods 的时候没有办法让 build 自动上传符号文件吗?
    • 应该上传哪个文件夹?我找不到系统文件夹
    【解决方案11】:

    我希望你已经解决了它。但对于其他使用 Firebase/Crashlytics 的人来说。我上传了构建并崩溃了,但由于缺少 dsym,它没有显示在控制台中。

    我登录了 iTunes 并转到了活动部分。然后下载dsyms.

    之后,我使用以下命令将 dsym 上传到 firebase 控制台:

    /Users/ankitjaiswal/Code/oliobox-ios/Pods/FirebaseCrashlytics/upload-symbols
    -gsp /Users/ankitjaiswal/Code/oliobox-ios/JacksonArtGallery/GoogleService-Info.plist
    -p ios /Users/ankitjaiswal/Downloads/appDsyms.zip
    

    但是这种方式你总是需要手动下载和上传。不建议这样做,您可以点击此链接:https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports-new-sdk

    【讨论】:

      【解决方案12】:

      我创建了有关 dSYM 上传的 Medium Story。

      一步一步如何用终端上传

      媒体链接: https://medium.com/@petarlemajic/firebase-dsyms-upload-1cf432c475f7 如果这对某人有帮助,我会很高兴。 干杯!

      【讨论】:

        【解决方案13】:

        下载 dsym .zip 文件后。您应该在终端中运行以下代码。

        /ProjectPath/Pods/Crashlytics/Crashlytics.framework/upload-symbols -gsp /ProjectPathForGoogleServiceFile/GoogleService-Info.plist -p ios /dSYMFilePath/dSYMs.zip
        
        

        如果没有找到 upload-symbols 命令,您应该为 Firebase 更新 pod。

        【讨论】:

          【解决方案14】:

          如果您仍然想要一个可以复制和粘贴的现成脚本,那么这个问题已经得到了很好的回答。给你。

              find
          
          $HOME/Library/Developer/Xcode
          /DerivedData/<target-name>-*/Build/Products/Develop-iphoneos
          
          -name "*.dSYM" | xargs -I \{\}
          
          $PODS_ROOT/FirebaseCrashlytics/upload-symbols
          
          -gsp ${PROJECT_DIR}/<target-name>/GoogleService-Info.plist
          
          -p ios \{\}
          

          【讨论】:

            【解决方案15】:

            (2020 年 10 月 21 日至 2020 年)

            我在将我的 dsym 上传到 firebase 时遇到了很多麻烦,这发生在我更新到 FirebaseCrashlytics 并删除了我的结构 SDK 之后,在此之前我没有任何问题。我尝试了所有解决方案都没有运气,但在对我的代码进行了一些更改后终于找出了我的问题。我的info.plist 文件中似乎有一些冲突的值,并且与我的GoogleService-Info.plist 文件中的值不一致。 GoogleService-Info.plist 中的捆绑 ID 应与 info.plist 中的 url 方案使用相同。进行这些更改后,我手动上传了 DSYM。

            这是更新后我的包 ID 在我的项目中的外观示例:

            GoogleService-Info.plist

            info.plist

            然后我想要这个自动化。我将以下脚本添加到 Build Phases > Run Script 中,现在我已经像以前使用 Fabric sdk 时那样自动化了。只需将此代码复制到运行脚本中,它应该不需要更改。

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

            PS:请务必关注其他帖子,确保您在构建选项中也设置了“DWARF with dYSM file”。

            【讨论】:

            • 为什么 BUNDLE_ID 的键需要匹配 Info.plist URL 方案中的键?这似乎具有误导性。我可以想象它需要匹配 Info.plist 中的 CFBundleIdentifier。
            【解决方案16】:

            简单步骤遵循 1 转到存档并右键单击要在其中获取 firebase 崩溃报告的最新版本 2 查看 dsyms 文件夹 3 创建 dsyms 文件夹的 Zip 文件 4 最后将该 zip 文件上传到 firebase 控制台

            【讨论】:

              【解决方案17】:

              接受的答案是完美的,我也遵循了。我只想添加另一种下载这些 dSyms 的方式。

              从 Xcode 菜单 > Window > Organizer 打开 Organizer

              从左侧面板中选择应用程序并选择存档选项卡。

              选择要下载 dSyms 的应用版本的存档。 (如果您已删除档案,那么您最好按照接受的答案)

              在右侧面板上,单击下载调试符号。现在这会将这些符号下载到存档本身中。只需右键单击存档版本 > 在 Finder 中显示。

              在 finder 中,右键单击存档 > 显示包内容。

              这将打开内容以显示 dSyms。

              现在您不需要所有这些,其中一些将是您从 pod 和其他导入中添加的框架/库。

              只选择带有字母数字标签的那些。

              您可以压缩这些文件并上传到 Firebase。

              【讨论】:

                【解决方案18】:

                根据 firebase 文档,除了上传 dsym 之外,您还可以将应用的构建 Info.plist 位置提供给构建阶段的 Input Files 字段:

                $(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)

                They fixed bug and document updated

                【讨论】:

                  【解决方案19】:
                  1. 转到 developer.apple.com > 活动 > iOS 构建 > 选择版本 > 下载 dSYM

                  2. 更改 your-project-pathyour-username

                  3. Terminal上运行此代码

                    /Users/your-project-path/ios/Pods/FirebaseCrashlytics/upload-symbols -gsp /Users/your-project-path/ios/GoogleService-Info.plist -p ios /Users/your-username/Downloads /appDsyms.zip

                  4. 您会在Terminal 上看到成功消息。

                  5. 在 15-30 分钟后检查 Firebase Console 上的崩溃日志。

                  【讨论】:

                  • 对我来说,它有“包括符号:是”,但没有“下载 dSYM”链接。
                  • @DielsonSales 目前可能没有例外。您是否在 Firebase 控制台上收到任何未找到的 dSYM 错误?
                  • 是的,但主要是针对我没有存档的旧版本。奇怪的是,如果我尝试从 Organizer 下载符号,它还会显示“未找到版本 x 的 dSYM”,但是当我上传它时,它明确表示存在调试符号。但是我通常不会在启用位码的情况下发送它,因为上传太大并且经常失败。
                  【解决方案20】:

                  感谢他们的作者,顶级解决方案很好。也许这个提示可以帮助某人:当你想通过崩溃你的应用程序来测试你的配置时,在模拟器上使用 Xcode 构建它,然后停止应用程序并直接在模拟器中重新启动它。 正如firebase doc所说:初始实例包括一个干扰Crashlytics的调试器。 https://firebase.google.com/docs/crashlytics/test-implementation?platform=ios#test_it_out

                  【讨论】:

                    【解决方案21】:

                    如果启用位码 = 是

                    1. 转到 App Store Connect
                    2. 转到 iOS 构建并下载 dSYM
                    3. 打开终端
                    4. 运行命令

                    /Users/your-project-path/ios/Pods/FirebaseCrashlytics/upload-symbols -gsp /Users/your-project-path/ios/GoogleService-Info.plist -p ios /Users/your-username/Downloads /appDsyms

                    1. 一旦您收到成功消息并在一段时间内刷新 Firebase 控制台,您将看到反射

                    注意:将所有构建的 dSYM 文件上传到 Firebase

                    【讨论】:

                      猜你喜欢
                      • 2020-12-03
                      • 1970-01-01
                      • 1970-01-01
                      • 2017-08-21
                      • 1970-01-01
                      • 2018-11-14
                      • 1970-01-01
                      • 1970-01-01
                      • 2020-11-28
                      相关资源
                      最近更新 更多