【问题标题】:Crashlytics is not sending Crash report from iPhoneCrashlytics 未从 iPhone 发送崩溃报告
【发布时间】:2013-07-23 00:13:11
【问题描述】:

我已在我的一个 iOS 应用程序中设置了 Crashlytics,并将该应用程序安装在真实设备上。我的 Crashlytics 仪表板显示,我已成功添加该应用程序。但是,它不会发送崩溃报告。我的网速不太好。但是我可以通过这个设备查看我的电子邮件。谁能猜到,问题出在哪里?

【问题讨论】:

  • 我在使用 Crashlytics 服务时遇到了同样的问题。永远不会发送来自设备的崩溃报告(根据我的经验) - 仅来自模拟器。我最终使用了 Crittercism 崩溃报告和错误处理。
  • 同样的事情发生在我身上。在实际开发设备之外的其他设备上尝试您的应用程序,这样您可以获得崩溃报告。
  • 是的,我正在使用我的开发设备。是不是有问题?
  • 如果没有完整的设置描述或测试项目,这是无法回答的。您应该联系 crashlytics 支持。胡乱猜测是没有用的。
  • 我很惊讶,Crashlytics 的某个人在 StackOverflow 上看到了我的这篇文章,并通过电子邮件与我联系;他正在帮我解决这个问题。让我们看看会发生什么。

标签: ios crash crash-reports crashlytics


【解决方案1】:

Xcode 调试器不允许 Crashlytics 处理崩溃报告。是的,当我第一次阅读时,这对我来说似乎很奇怪,但这是事实(Source)。这就是我们从未看到崩溃报告的原因:
- 在模拟器中运行应用程序
- 通过打开调试器直接从 Xcode 构建和运行,在 iDevice 上运行应用程序。

为了确保在测试期间报告崩溃 (copied from Crashlytics support site):
1. 启动模拟器
2. 按停止
3. 启动您的应用程序并强制崩溃
4. 从模拟器重新启动应用程序
5. 查看网络仪表板中的崩溃报告。

编辑:

添加了参考; Crashlytics 还在a quick way to force a crash 上提供了一篇短文。

【讨论】:

  • 这对我有帮助。在某些情况下,我也发现了这一点。除非再次打开应用程序,否则 Crashlytics 不会发送崩溃报告。重申:用户遇到崩溃。用户重新打开应用程序。 Crashlytics 发送之前的崩溃报告。
  • @tambykojak 这可能是因为 iOS 崩溃在大多数情况下非常不稳定,更安全的方法是在下一次应用加载时发送崩溃报告而不是立即发送。许多崩溃报告工具在 iOS 和其他非 VM 崩溃处理程序上使用此范例。
  • 谢谢。这应该被标记为正确答案:)
  • 在这种情况下我需要上传任何 dsym 吗?如果是这样,我在哪里可以找到它们?
  • 链接已失效。
【解决方案2】:

虽然晚了,但工作 100%

对项目构建设置进行一些更改,如下图所示

and follow these instructions.

【讨论】:

  • 即使在禁用 Bitcode 之后,我仍然时不时地丢失 dSYMS 错误,并且在使用模拟器进行调试时 100% 的时间。这解决了它。谢谢。
  • 通过更改此设置,我能够看到 firebase 平台中的崩溃
  • 谢谢!做到了!
【解决方案3】:

任何崩溃报告器无法在 iOS 上运行的主要原因是来自不同崩溃报告器的干扰。但是,具体使用 Crashlytics 时,可能存在特定于它们的问题,导致崩溃报告未得到报告。

Xcode 调试器不允许 Any Crash Reporter 处理崩溃报告。这是因为 XCode 覆盖了崩溃处理回调中的任何挂钩。这只发生在以下情况:

  • 在模拟器中运行应用程序(打开调试器)
  • 通过打开调试器直接从 Xcode 构建和运行,在 iDevice 上运行应用程序。

为了确保在测试期间报告崩溃 (http://support.crashlytics.com/knowledgebase/articles/92523-why-can-t-i-have-xcode-connected-):

  1. 启动模拟器
  2. 按下停止
  3. 启动您的应用并强制崩溃
  4. 从模拟器重新启动应用程序
  5. 在网络仪表板中查看崩溃报告。

虽然它仍然是一个超级老视频,但这里是上述步骤的视频(来自 Crittercism 的示例):https://www.youtube.com/watch?v=sU6Su3PBFH4

【讨论】:

  • Crashlytics 在检测到附加的调试器时会自行禁用。不是因为它不起作用,而是因为它会阻止 调试器 正常工作。 Crashlytics 使用调试器本身使用的相同机制,如果 SDK 弄乱了正常的调试流程,那真是令人沮丧。作为参考,我编写了大部分 Crashlytics SDK。
  • 神一样的回答 wp
【解决方案4】:

对我来说,问题在于设备已连接到我的 Mac :) 来自this source

此外,如果您将设备连接到 Mac,XCode 的调试器 也会介入。因此,只需在测试前断开设备即可:)

【讨论】:

  • 谢谢你!!!
【解决方案5】:

我使用以下步骤找到了解决方案
1.进入编辑方案 2.运行->信息 3. 将构建配置更改为发布。 现在运行应用程序崩溃它。您将收到邮件。

【讨论】:

    【解决方案6】:

    我们最近遇到了这个问题,我发现在某个地方构建脚本被删除了。使用以下内容重新添加它为我们解决了这个问题:
    ./Crashlytics.framework/run <your_api_key> <build_secret>

    注意: 使用 Cocoapods 时,您需要使用以下内容而不是上述内容 (source): ./Pods/CrashlyticsFramework/Crashlytics.framework/run

    添加构建脚本:

    1. 要在 Xcode 6 中添加运行脚本构建阶段,请在项目中选择应用程序目标,然后选择“构建阶段”。
    2. 点击小“加号”图标并选择“New Run Script Build Phase”。
    3. 您现在应该在构建阶段选项的中间看到一个运行脚本部分,如上所示。
    4. 在运行脚本构建阶段的正文中,粘贴脚本。`

    以上引用来自 Crashlytics 的visual tutorial,引用于this post

    注意:我最初为Crashlytics error code: 202 when Submitting files逐字发布此答案。

    【讨论】:

    • 这似乎对我有所帮助。
    • 我以前使用 Fabric 进行 Twitter 集成,现在我想要 crashlytics,还添加了框架,我按照所有说明进行操作,但我的仪表板没有收到任何崩溃报告,请帮助我
    • @iOS_Ramesh 我很想帮助你,但如果不知道更多,那就很难了。为此,您应该打开一个新问题,概述您所处的位置(您集成的步骤、任何适当的代码 sn-ps 以及您从 Crashlytics 或控制台获得的任何反馈)。
    • 我已经发布了一个新问题...stackoverflow.com/questions/30215049/…
    • 感谢您的提示。我们有 [ "Release" = "${CONFIGURATION}" ] 签入我们的运行脚本,我们已经重命名了我们的发布配置。
    【解决方案7】:

    来自 RayWenderlich 网站:

    如果 Xcode 拦截崩溃事件,您将不会收到任何崩溃报告! 要使下面的所有示例都能正常工作,您必须构建并运行 应用程序,然后单击 Xcode 上的停止按钮。这样你会 在设备上安装最新版本。一旦那是 完成后,您可以在设备本身上启动应用程序,然后将其崩溃 所有你想要的!您的 iOS 设备上的所有崩溃都将被捕获并 发送到您已集成的服务的服务器组件 进入应用程序。崩溃报告通常会在下一个发送到服务器 启动应用程序的时间,因此生成崩溃的步骤 服务器上的报告如下: Build and run on Xcode。按 停止按钮。在您的 iOS 设备上运行该应用程序。使应用程序崩溃。跑步 再次应用。

    【讨论】:

      【解决方案8】:

      直到现在,Crashlytics 都为我工作。 我不知道为什么,但现在它不起作用。

      你应该打开调试模式

      [Crashlytics sharedInstance].debugMode = YES;
      

      我的问题在这里Crashlytics error code: 202 when Submitting files :(

      【讨论】:

        【解决方案9】:

        确保您没有过早地强制崩溃。

        [Crashlytics sharedInstance].debugMode设置为YES

        注意

        Crashlytics] Settings loaded
        

        在 Xcode 控制台日志上。

        然后强制崩溃并重启应用,现在就会报崩溃。

        【讨论】:

          【解决方案10】:

          我在尝试测试崩溃代码时遇到了类似的问题。

          Crashlytics.sharedInstance().crash()
          

          我在没有 Xcode 的设备上运行我的应用程序,崩溃不会显示在 Crashlytics Dashboard 上。对我有用的是来自 Crashlytics 网站的以下提示:

          • 确保在应用崩溃后启动应用,以便崩溃可以 上传

          我注释掉了上面的 crash() 调用,并重新运行了应用程序。然后崩溃出现在仪表板中。

          【讨论】:

            【解决方案11】:

            这是针对 xcode 9 的,来自 crashlytics 3.4.0

            完成此操作后,请耐心等待几分钟。

            【讨论】:

              【解决方案12】:

              您是否尝试过在设备上运行 [[Crashlytics sharedInstance] crash] 并查看是否会收到报告? Crashlytics 可能无法工作的原因有几个,包括其他崩溃报告器等。

              【讨论】:

              • 不,我使用的是 int *x = NULL; *x = 42;查看崩溃报告的代码。此外,我的应用程序也因不同的核心数据模型而崩溃。
              【解决方案13】:

              如果您不上传 dSYM 文件,即使报告已成功上传,Crashlytics 也不会显示您的崩溃。

              如果您已将构建脚本设置为仅在 CI 服务器上运行,您可能会遇到此问题。然后,如果您通过 xcode 将您的应用复制到您的手机并在没有附加到调试器的情况下运行它,则报告将被上传但由于缺少 dSYM 文件而被忽略。

              【解决方案14】:

              有时,日志显示需要一些时间。我可以在 15-20 分钟后找到它们

              【讨论】:

                【解决方案15】:

                我觉得在运行脚本阶段中的一个问题,它应该是 CrashLytics 的单独运行脚本阶段。什么时候有运行脚本

                ./Fabric.framework/run
                

                使用我的其他一些脚本,一切正常,CrashLytics 日志显示报告已提交,但 Web 界面中没有任何内容。

                当我仅使用 Fabric 运行添加另一个运行脚本阶段时,它看起来就像一个魔术 :)

                我的第一次尝试是使用 cocoapods,但没有奏效。 当我手动添加所有框架和一个单独的运行脚本阶段时。

                【讨论】:

                  【解决方案16】:

                  这对我有用,

                  如果您在 iDevice 上进行测试,只需将 iDevice 与您的 Xcode 拔下并运行您的应用程序。 现在,如果崩溃,它将在仪表板上更新。

                  【讨论】:

                    【解决方案17】:

                    我通过取消选择运行脚本中的“仅在安装时运行脚本”选项来解决问题(一个用于 Fabric(crashlytics))

                    【讨论】:

                    • 这只是将符号上传到 Crashlytics 的脚本;那如何解决未发送崩溃报告的问题?当符号尚未上传时,您应采取哪些步骤来避免使用 Crashlytics?这个答案具有误导性,完全是错误的。
                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2015-03-14
                    • 1970-01-01
                    • 2019-04-18
                    • 1970-01-01
                    • 1970-01-01
                    • 2014-11-23
                    • 1970-01-01
                    相关资源
                    最近更新 更多