iOS 和 FirebaseCrashlytics

mob*_*kie 37 ios firebase crashlytics swift

我正在尝试按照Firebase Docs上的说明上传缺少的必需 dSYM。但是我坚持运行上传程序脚本。

在我的构建阶段,我有

"${PODS_ROOT}/FirebaseCrashlytics/upload-symbols -gsp${SRCROOT}/GoogleService-Info.plist -p ios ${SRCROOT}/appDsyms"
Run Code Online (Sandbox Code Playgroud)

当我尝试使用此构建 iOS 应用程序时,出现错误:

第 4 行:/path/to/Pods/FirebaseCrashlytics/upload-symbols -gsp/path/to/GoogleService-Info.plist -p ios /path/to/appDsyms:没有这样的文件或目录

命令 PhaseScriptExecution 失败,退出代码非零

当我尝试从终端运行脚本时,出现错误:

未提供 Google App ID 或 Google 服务文件

我已经验证我有一个 Google 服务文件,并且能够使用依赖它的其他 firebase 服务运行我的项目。我曾经能够将 Dysm 文件直接上传到 Firebase 控制台,但在 3 月 1 日发生了变化。

此命令应该作为 XCode 脚本运行还是作为终端命令运行?而且,更重要的是,有人知道如何解决这个问题吗?

Vis*_*ane 56

截至 2020 年 5 月:

Fabrics关机,许多开发商面临着这样的问题,因为织物自动创建脚本上传dSYM的文件Xcode,我们从来没有重视起来。

现在作为Fabric替换为FirebaseCrashlytics,为了实现这种自动机制,您可以创建一个新的运行脚本并将此脚本粘贴到那里:

"${PODS_ROOT}/FirebaseCrashlytics/upload-symbols" -gsp "${PROJECT_DIR}/GoogleService-Info.plist" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

此脚本将获取 dSYM 文件并将它们上传到 Firebase 服务器,以便您可以看到崩溃。

对于多个方案:

如果您的项目有多个方案,您可以通过更改 Google Plist 文件的路径来简单地创建多个此类脚本。

注意:您也可以dSYM使用upload-symbols工具[Check here]手动上传文件,但最好尽可能自动执行此过程。

编辑:2020 年 7 月: 当您在Crashlytics仪表板中看到丢失的崩溃 dSYM 文件时,您可以在dSYM提交构建文件以供 Apple 审查或通过 Test Flight 进行测试后立即上传构建文件,而不是收到该文件的电子邮件。

显示缺失dSYM是因为bitCode启用时,App Store Connect处理二进制文件上传并生成新的 dSYM 文件。

您可以从该文件的dSYMActivity的部分App Store Connect

在此处输入图片说明

  • @mobiledevcookie,您只需按原样编写脚本即可。您不需要指定确切的路径。脚本会自己找到它。唯一需要您注意的是:````"${PROJECT_DIR}/GoogleService-Info.plist"```。确保指定 GoogleService-Info.plist 文件的正确路径。无论如何,如果出现任何问题,Firebase 现在都会显示一条非常具有描述性的错误消息,并且很容易修复此问题。 (2认同)

Xys*_*Xys 21

2020 FirebaseCrashlytics 解决方案

您有两种解决方案:

1)从命令行

转到您的项目文件夹并运行:

./Pods/FirebaseCrashlytics/upload-symbols -gsp GoogleService-Info.plist -p ios <path_to_your_dsyms_zip>

您可以在 Xcode 管理器中获取 dsym > 右键单击​​存档 > 在 Finder 中显示 - > 显示内容 - > 转到 dsymm 文件夹并对其进行压缩

2) 从 Xcode 构建阶段

如此处(Firebase 文档)所述,您可以使用以下内容在 Xcode 中添加运行脚本阶段:

"${PODS_ROOT}/FirebaseCrashlytics/run"

您还必须在运行脚本下添加这两个输入文件:

${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}

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


Key*_*gar 19

经过几个小时的努力,这个问题终于用这种方法解决了:

在终端中使用此命令: /path/to/pods/directory/FirebaseCrashlytics/upload-symbols -gsp /path/to/GoogleService-Info.plist -p ios /path/to/dSYMs

重要的是,/path/to/pods/directory您不应在应用程序文件夹中输入 pods 文件夹的路径,而不必/path/to输入项目文件夹中的 GoogleService-Info.plist 路径。最后一个是,而不是/path/to/dSYMs您应该输入格式为.xcarchive.

要找到.xcarchive路径,您应该首先归档您的应用程序,然后转到 XCode -> Organizer 并选择您的构建,然后右键单击它并选择“在查找器中显示”,然后右键单击您的.xcarchive文件并选择“显示包内容” . 就是这样,您可以复制此路径并粘贴它而不是/path/to/dSYMs然后按 Enter 开始上传到 Firebase Crashlytics。

查看此链接了解更多信息: Firebase Docs


小智 12

在为 Crashlytics 实施 FirebaseCrashlytics(目前处于测试阶段)时

从添加新的运行脚本Build Phases并添加以下内容:

"${PODS_ROOT}/FirebaseCrashlytics/run"
Run Code Online (Sandbox Code Playgroud)

Input Files部分添加

${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}
Run Code Online (Sandbox Code Playgroud)

$(SRCROOT)/path to/GoogleService-Info.plist
Run Code Online (Sandbox Code Playgroud)

如果仍然dSYM丢失错误,请尝试从终端运行

/path/to/pods/FirebaseCrashlytics/upload-symbols -gsp /path/to/GoogleService-Info.plist -p ios /path/to/dSYMs
Run Code Online (Sandbox Code Playgroud)

Forpath to FirebaseCrashlyticsGoogleService-Info.plist从实际位置拖放 For dSYMs 路径将是${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}

要获得该命令,请使用您的项目 .xcodeproj 并定位xcodebuild -project YourProject.xcodeproj -target YourTarget -showBuildSettings
并替换您的特定路径

实施 Crashlytics 时请注意以下事项
1. 在发布模式下运行应用程序
2. 在测试断开设备与 mac 的连接时
3. 设置正确GoogleService-Info.plist
4. 如果您重命名它,请确保在需要时设置正确的文件名。


Muk*_*esh 6

相信我,我花了一天时间但没有任何效果,

令人惊讶的是,很少有解决方案适用于我同事的几个项目,但我使用的是 Big Sur 和 Xcode 12.2,但对我来说没有任何作用。

尝试1:firebase文档中提到的每个步骤。

尝试2:尝试通过传递从终端上传符号path_to_pod_firebasecrshlytics/uploadsybol -gsp path_to/GoogleService-Info.plist -p ios path_to/dSYMs

但是,运气不佳,

以下技巧对我有用,

第 1 步:确保您使用的是最新的 firebase crashlytics 版本,提供项目路径并启动 cmdpod update

我使用的是 Firebase Crashlytics 版本 4.0.0-beta.1,但在 pod 更新后它是 8.2.0

第 2 步:进入构建阶段,在下面添加一个运行脚本来编译捆绑资源"${PODS_ROOT}/FirebaseCrashlytics/run"

第3步:添加DYSM脚本,"${PODS_ROOT}/FirebaseCrashlytics/upload-symbols" -gsp "${PROJECT_DIR}/your_path/GoogleService-Info.plist" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"

第四步:构建项目;

第 5 步:运行项目并停止或断开与故事板的连接

第6步:进行崩溃2-3次并等待2-5分钟。

干杯,一切就绪!


Dmi*_*cov 5

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

我在附加文件夹中替换了我的 GoogleService-Info.plist 并在 shell 脚本中进行了目录更改。可能你也应该这样做

对于终端命令,您最好在终端中拖放必要的文件,然后复制选定的路径

/path_to_pods/FirebaseCrashlytics/upload-symbols -gsp /path_to_google_service/GoogleService-Info.plist -p iOS /path_to_dSYMs