iOS Firebase Crashlytics在仪表板中没有显示崩溃信息

16
我在我的iOS应用程序中实现了Firebase Crashlytics。我按照Firebase文档中的所有步骤进行了操作。我已经通过先关闭应用程序,然后重新运行应用程序来运行无调试器的crashlytics,以便可以发送crash报告。我甚至收到了这条消息:
“Crash upload submission succesful”。
我甚至添加了运行脚本并将变量设置为“DWARF with DSYM”:
"${PODS_ROOT}/Fabric/run"
我曾经看到过一篇文章,如果没有上传DSYM,即使它们成功上传,您也看不到崩溃。因此,我进入我的pods/Fabric/,点击“run” CLI。它清楚地表明:因为找不到GoogleServiceInfo.plist,DSYM未上传。尽管它在那里,并且是包括在我的目标以及我的bundle中的。

enter image description here

这是屏幕截图。我已经尝试了所有可能的步骤来包含GoogleService-Info.plist,但手动运行时仍然会显示此消息。

enter image description here

我还可以尝试其他方法吗?


你确定是 GoogleService-Info.plist 而不是 GoogleService-Info1.plist 或 GoogleService-Info2.plist 或其他什么文件吗? - Vikky
是的,我已经重新检查了大约10次。 - Moaz Khan
嗨,Moaz Khan,你是怎么解决这个问题的?我也遇到了同样的问题,手动运行时找不到plist文件。当我创建一个ipa文件并制作测试崩溃时,在模拟器中运行正常,但显示缺少dysm文件。 - 08442
只需阅读我的答案,在第一个视图控制器中添加测试崩溃,然后等待一段时间,测试将开始出现。 - Moaz Khan
8个回答

36

试一下这个:

  1. 从Xcode中运行你的应用程序以在模拟器或设备上安装它
  2. 按下Xcode中的停止按钮来退出它
  3. 从主屏幕启动您的应用程序以在没有调试器的情况下运行它
  4. 按下“Crash”按钮以触发崩溃
  5. 再次从Xcode中运行该应用程序,以便将记录的崩溃交付给Crashlytics
  6. 几分钟内,您应该会在Firebase Crashlytics控制台中看到崩溃出现。

供参考:

在iOS中集成Firebase和Crashlytics


嘿,这在我的情况下是有效的,但是在使用Fabric提供的示例代码设置用户详细信息后,新的崩溃在仪表板中不显示,并且有一个缺少dSYMs的警告,为什么会这样?哪里出错了? - Sachintha Udara
@SachinthaUdara 请尝试以下方法:检查Xcode是否生成调试符号文件:
  1. 在Xcode中打开您的项目,并在Xcode导航器中选择项目文件。
  2. 从“选择项目或目标”下拉菜单中选择您的主要构建目标。
  3. 打开目标的“构建设置”选项卡。
  4. 单击选项卡顶部附近的“All”。
  5. 搜索“调试信息格式”。
  6. 将调试信息格式设置为带有dSYM文件的DWARF。
如果这不起作用,您应该手动添加运行上传符号脚本。参考链接: https://medium.com/swlh/firebase-crashlytics-full-guide-part2-52b35c3c79c8
- Piero Sifuentes
感谢您的回复,是的,我在配置早期就选择了一部分dSYM。我不知道真正的原因,但当我在Firebase中做同样的事情时,它运行得很平稳。我认为这可能与Fabric SDK有关。 - Sachintha Udara
天啊,我花了一整天的时间来尝试解决这个问题,而这是唯一有效的方法!谢谢。 - Azin Mehrnoosh
我错过了第五步 -> 重要的是使用Xcode重新启动应用程序,而不是从主屏幕启动。非常感谢! - Jeremy Piednoel
Firebase Crashlytics 已经过时了,我认为它不再起作用了... 无法使其工作。 - ΩlostA

12

我尝试了几件事情,但以下步骤对我有用:

  1. FirebaseApp.configure() 放在 didFinishLaunchingWithOptions 的第一行。
  2. 如果你同时有 Firebase/CrashlyticsCrashlytics,请从 pods 中删除 Crashlytics 并更新它。
  3. 检查 Build Phases 中的 Run Script 是否有条目 "${PODS_ROOT}/FirebaseCrashlytics/run"
  4. 如果您在调试模式下运行应用程序,请确保已在项目的测试方案中添加 -FIRDebugEnabled
  5. 从主屏幕启动应用程序(不要从 Xcode 运行),并在任何按钮的操作中使其崩溃。(您将在 5-10 分钟内在 Firebase 控制台中找到崩溃信息)

1
谢谢,我一直在尝试理解为什么激活没有发生,原来需要从主屏幕启动应用程序,很遗憾Google在手册中没有提到这一点。 - Maxim Golovlev
1
我有CrashlyticsFabricFirebase/Crashlytics,所以很困惑。我把所有的都删掉,只留下了Firebase/Crashlytics,然后它就可以用了。 - Niraj
1
非常感谢!这部分对我很有帮助: 5. 从主屏幕运行应用程序(不要从Xcode运行),并在任何按钮的操作中崩溃。(您将在5-10分钟内在Firebase控制台中找到崩溃) - Koen

6

对于仍然遇到问题的人,这是我解决问题的方法。

  1. 我删除了GoogleService-Info.plist文件,并重新添加了它。

  2. 我在欢迎界面上尝试崩溃,而不是在我的选项卡控制器中的一个屏幕上,因为我相信从那里无法找到GoogleServiceInfo.plist文件,所以它起作用了。


1
我也遇到了同样的问题,即使删除并重新添加GoogleService-Info.plist文件仍然没有解决。现在有点令人沮丧。 - Srijan Kumar
1
在您的应用程序的第一个视图控制器中添加一个测试崩溃。之后它将开始显示。 - Moaz Khan

5

按照以下文档中所述的步骤完成后,执行以下步骤:

  • 使用 Xcode 安装应用。
  • 退出应用程序。
  • 从主屏幕启动应用程序 - 这很重要。
  • 强制崩溃。

它们将开始在控制台上显示。


1
很抱歉,对我来说没用。 - Rohit Singh

0
在遵循所有必要的步骤后: 不是从Xcode运行应用程序,而是从iPhone /模拟器界面运行,这有助于我在Crashlytics仪表板中检测崩溃。

0

对于SwiftUI和Swift 5,请将以下代码粘贴到构建阶段的底部

脚本:

"${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"

enter image description here


0

我解决了同样的问题,通过在我的Podfile中添加FirebaseCraslytics pod:

...
pod 'FirebaseAnalytics'
pod 'FirebaseCrashlytics'

然后我在Build Phases中添加了以下的Run Script

enter image description here

脚本:

"${PODS_ROOT}/FirebaseCrashlytics/run"

输入文件:

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

之后,我按照第三步:强制测试崩溃以完成设置的步骤进行操作,Crashlytics开始工作。


我已经尝试了所有方法,但我认为 Firebase Crashlytics 不再起作用了... - ΩlostA

-4

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