Firebase Crashlytics:上传缺少的dSYM以查看1个版本的崩溃。(iOS)

时间:2018-01-17 08:37:12

标签: ios firebase crashlytics deobfuscation

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

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

@IBAction func onTestCrashButtonClick(_ sender: UIButton) {

    Crashlytics.sharedInstance().crash()

}

但是当我试图在firebase控制台中看到错误报告时,它会显示类似这样的图像。

enter image description here

阅读Get Deobfuscated crash reports后,我只是将调试信息格式设置为 DWARF和dSYM文件 ,如下所示,但问题直到现在都没有修复。 enter image description here

20 个答案:

答案 0 :(得分:61)

仅一种简单方式将DSYMS文件上传到Firebase Crashlytics。 ( 2020年6月1日

  1. 从App Store下载appDsyms存档

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

    1.2转到:MyApps->选择您的应用程序->活动(左上角)->选择要崩溃的版本->包含符号:按-> Download dSYM

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

    2.1拖放:“上载符号”,可以在以下位置找到 /project/Pods/FirebaseCrashlytics/upload-symbols

    2.2写入“ -gsp

    2.3拖放一个:“ GoogleService-Info.plist”,可以在/project/GoogleService-Info.plist

    中找到

    2.4写入“ -p ios

    2.5拖放一个“ appDsyms”文件夹,该文件夹通常位于下载文件夹/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

全部设置,等待在终端中上传!

终端示例: enter image description here

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

enter image description here

答案 1 :(得分:30)

我一直有同样的问题,我终于能够解决它了,以为我会分享对我有用的东西:

对于上下文,我正在开发一个使用多个Cocoapods的更大的应用程序。

我在Firebase Crashlytics页面上找到了相同的红色横幅,并在完成所有instructions之后,我仍然看到它。

我通过终端"手动尝试"存档/找到.dSYMs /上传。解决方案好几次无济于事。

最后,我决定从iTunesConnect下载.dSYM [您的应用]>活动> [期望的建造数]>下载dSYM

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

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

答案 2 :(得分:8)

Pods/Fabric/upload-symbols -gsp APP/Resources/GoogleService_Info.plist -p ios /Users/ME/Desktop/APP.app.dSYM

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

答案 3 :(得分:3)

2021 年 3 月

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

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

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

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

答案 4 :(得分:3)

Fabric Crashlytics 更新为 Firebase Crashlytics SDK之后。我也遇到了同样的问题(上传1个缺少的dSYM来处理5个崩溃)。我借助以下步骤解决了问题:

第1步: 打开目标->构建设置->搜索“调试信息格式”。 将所有 Debug Information Format (调试信息格式)设置为带有dSYM文件的DWARF 您的构建类型。

enter image description here 第2步: 打开“运行脚本”部分并输入脚本

“ $ {PODS_ROOT} / FirebaseCrashlytics / run”

,然后添加输入文件-

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

enter image description here

步骤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

答案 5 :(得分:2)

如果一切正常,则可以进行所有设置而不会丢失任何步骤,然后还会看到上载丢失的dSYM以查看崩溃错误。

enter image description here

  

仅从 iTunesConnect 下载 .dSYM ,然后将其上传到 Firebase

enter image description here

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

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

答案 6 :(得分:1)

查找并上传Crashlytics的调试符号

  • 复制缺少的dSYM的UUID并运行 session_start(); if( !isset($_POST['addtocart']) ) { if( !isset($_SESSION['array1']) ) $_SESSION["array1"] =array(); $_SESSION['array1'][] = $_GET['pid']; } print_r($_SESSION["array1"]); 在终端窗口上。
  • 上述命令将返回类似mdfind "com_apple_xcode_dsym_uuids == <UUID>"
  • 的内容
  • 压缩软件包并使用Firebase仪表板上传到Crashlytics

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

答案 7 :(得分:1)

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

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

如果未找到upload-symbols命令,则应更新Firebase的Pod。

答案 8 :(得分:1)

希望您到现在为止都能解决。但对于其他使用Firebase / Crashlytics的用户。我上传了构建版本,但崩溃了,但由于缺少dsym而未能在控制台中显示。

我登录了iTunes并转到活动部分。然后下载dsym。enter image description here

之后,我使用以下命令将dsyms上传到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

答案 9 :(得分:1)

如果您使用动态库是使用可可豆荚或任何其他工具的项目,那么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。

希望这有帮助!

答案 10 :(得分:1)

我创建了有关dSYM上传的中等故事。

逐步介绍如何通过终端上传

中型链接: https://medium.com/@petarlemajic/firebase-dsyms-upload-1cf432c475f7 如果这可以帮助到我,我会很高兴。 干杯!

答案 11 :(得分:0)

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

答案 12 :(得分:0)

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

答案 13 :(得分:0)

  1. 转到developer.apple.com>活动> iOS构建>选择版本>下载dSYM

  2. 更改您的项目路径您的用户名

  3. Terminal

    上运行此代码

    / Users /您的项目路径/ ios / Pods / FirebaseCrashlytics / upload-symbols -gsp /Users/your-project-path/ios/GoogleService-Info.plist -p ios / Users /您的用户名/下载/appDsyms.zip

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

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

download symbold

答案 14 :(得分:0)

根据Firebase文档,而不是上载dsym,也可以在构建阶段的“输入文件”字段中提供应用程序的Info.plist构建位置:

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

They fixed bug and document updated

答案 15 :(得分:0)

(2020年10月21日)

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

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

GoogleService-Info.plist enter image description here

info.plist enter image description here

然后我想让它自动化。我将以下脚本添加到了“构建阶段”>“运行脚本”中,并且现在像以前使用Fabric sdk一样具有自动化功能。只需将此代码复制到运行脚本中,就无需进行任何更改。

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

enter image description here

PS:请确保您遵循其他文章,并确保在构建选项中也设置了“带有dYSM文件的DWARF”。

答案 16 :(得分:0)

如果您仍然想要可以复制和粘贴的现成脚本,则已经很好地回答了问题。给你。

    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 \{\}

答案 17 :(得分:0)

就我而言,我已经完成了以下工作,并且有效:

  1. 在“构建阶段”->“运行脚本”中选择“仅在安装时运行脚本” (Shell = $ {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文件

答案 18 :(得分:0)

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

从Xcode菜单>窗口>管理器中打开管理器

从左侧面板中选择“应用程序”,然后选择“存档”标签。

为要下载dSyms的应用程序版本选择存档。 (如果您删除了存档,则最好遵循已接受的答案)

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

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

这将打开内容以显示dSyms。

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

仅选择带有字母数字标签的标签。

enter image description here

您可以将其压缩并上传到Firebase。

答案 19 :(得分:0)

我也面临同样的问题。 基本上,我缺少一个简单的步骤,这就是为什么Firebase脚本无法上传dSYM文件。

要解决的步骤。

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

xCode setting screen

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