【问题标题】:Crashlytics not reporting crash in Release modeCrashlytics 在发布模式下未报告崩溃
【发布时间】:2015-10-29 02:07:15
【问题描述】:

Crashlytics 已在相关应用中安装了几个版本。它工作得很好。

但在我们准备下一个版本时,Crashlytics 已停止在发布模式下报告崩溃。以下是我能想到的自上次发布以来发生了变化的事情。

  • Xcode 7.1。最后一个版本是使用 Xcode 6 准备的。
  • 我们升级到 Fabric。
  • 我们正在 iOS 9.1 上测试该应用程序。

无论如何,在调试中仍然可以正常报告所有这些更改崩溃。只是不在 Release 中(存档并上传到 iTunes Connect 后从 TestFlight 安装)。

以下是我检查过的内容:

  • 在 Fabric 网站上,应用程序在那里,版本和构建在那里。当我单击 Missing DSYMs 时,它告诉我没有丢失。

  • startWithAPIKeydidFinishLaunchingWithOptions 中被调用(在木马问题之后添加)。

  • api 密钥正确。检查和双重检查。

  • 在构建脚本中,Debug 和 Release 之间没有(也从来没有)区别。它看起来像这样:

  • 在构建设置中,DEBUG_INFORMATION_FORMAT 已经设置为 DWARF with dSYM File(在 StormXX 的问题之后添加):

我错过了什么?

【问题讨论】:

  • 你是从你的应用代理调用 API 吗?
  • 是的。 [Crashlytics startWithAPIKey:@"a980b... 好问题。我会将其添加到问题的清单中。
  • 我也有同样的问题... x(
  • 您是如何解决问题的?我也面临同样的问题。
  • @Aanchal 请参阅下面 Mike 接受的答案。

标签: ios xcode testflight crashlytics


【解决方案1】:

我也遇到过这个问题。我的应用程序 DSYM 文件没有像以前那样自动上传到 Fabric。发现根本原因是xcode 7.1已经默认项目启用bitcode=YES

在我的 Build Settings 中设置 Bitcode enabled = NO 修复了自动上传问题。

来自 Fabrics 高级设置document

启用 Bitcode 的应用程序需要从 Xcode 下载其 dSYM,然后将其上传到 Crashlytics,以便我们可以符号化崩溃。

【讨论】:

  • 禁用位码不是解决问题的正确方法,它就像“用锤子杀死苍蝇”。位码是一个很棒的功能,你应该使用它。如果你这样做了,你应该从 iTunes Connect(或在 Xcode 的组织者中)下载 dSYM 并将其上传到 Crashlytics - 这就是你修复丢失符号的方法。)
  • 它是 App Thinning 的一部分: > Bitcode 是已编译程序的中间表示。您上传到 iTunes Connect 的包含位码的应用程序将在商店中编译和链接。包含位码将允许 Apple 在未来重新优化您的应用程序二进制文件,而无需向商店提交您的应用程序的新版本。见:developer.apple.com/library/content/documentation/IDEs/…
【解决方案2】:

来自 Crashlytics 和 Fabric 的 Mike 在这里。

使用 Fabric,Crashlytics 的初始化确实略有变化。使用以下代码应该可以工作(Obj-C):

#import "AppDelegate.h"
#import <Fabric/Fabric.h>
#import <Crashlytics/Crashlytics.h>

@interface AppDelegate ()

@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    [Crashlytics startWithAPIKey:@"YourAPIKey"];
    // You can comment out the above line if you have your Twitter Fabric API key in your info.plist.
    [Fabric with:@[[Crashlytics class]]];
    return YES;
}

还建议将运行脚本构建阶段更新为以下内容:

./Fabric.framework/run <YourAPIKey> <YourBuildSecret> 

【讨论】:

  • Crashlytics 自动更新时不应该通知这个吗?哪个版本改了?
  • 迁移到 Fabric 并更新到 Crashlytics SDK 的更新版本后,系统会提示您切换运行脚本。此外,根据许多开发人员的反馈,使用 Fabric 时,将更新流程更改为完全由您控制。更新不会自动应用。
  • 我从织物开始,但是我被告知要使用的 [Fabric with...] 与您提到的不同。那不应该担心吗?
  • 可以使用旧版本的初始化。我提供的将适用于最新版本的框架。
【解决方案3】:

我遇到了同样的问题,我解决了... 检查项目的 Build Setting ,找到 Debug Information Format。将其更改为 DWARF with dSYM File

Image

【讨论】:

  • 感谢您的建议。但是构建设置已经设置为DWARF with dSYM File
  • 但我在构建设置中没有看到调试区域
【解决方案4】:

对我来说,从 .xcarchive 上传 dsym 文件并没有帮助。仅当我从 iTunesConnect 下载 zip dSYM 存档并将其上传到 fabric 时才有意义。

【讨论】:

    【解决方案5】:

    就我而言,这是完全不同的问题。早些时候我完美地获得了所有的崩溃报告,但由于某些原因,我必须更新我的项目包 ID。

    因此,如果您更新捆绑包 ID,那么您在 Fabric 上创建的项目将不会收到崩溃报告,因为您需要为该新捆绑包 ID 创建一个新项目。

    重要提示:如果您的 Fabric 应用上的bundle id 不同,那么您将永远不会收到任何崩溃报告。

    提示:使用 Fabric 桌面应用程序在 Fabric 中创建项目。

    【讨论】:

      猜你喜欢
      • 2019-04-18
      • 1970-01-01
      • 2013-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      • 2015-12-23
      相关资源
      最近更新 更多