“[Crashlytics:Crash]报告已停用”

时间:2017-05-09 16:59:37

标签: ios crashlytics google-fabric

我的生产iOS应用初始化时收到以下错误消息:

[Crashlytics] Version 3.8.4 (121)
[Crashlytics] Running on iOS Simulator (iPhone), 10.3.0 (16E195) 
[Crashlytics:Crash] Reporting is disabled 
[Crashlytics] Crash reporting could not be initialized 
[Answers] Initialized 
[Fabric] Initialized with kit versions: {
    "com.twitter.answers.ios" = "1.3.4"; 
    "com.twitter.crashlytics.ios" = "3.8.4"; 
    "io.fabric.sdk.ios" = "1.6.11"; 
}

记录事件的每次后续调用都会收到以下错误:

[Crashlytics:Crash] WARNING: CLSLog has been used before (or concurrently with) 
    Crashlytics initialization and cannot be recorded. The message was: ...

应用程序的非生产版本可以正常运行完全相同的代码,但具有不同的bundleID。通常,当应用程序首次初始化时,我会看到应用程序填充在Fabric仪表板中,但在这种情况下,应用程序未显示。

我们有一个Android和iOS版本的应用程序,他们都使用相同的bundleID,所以我想知道是否存在冲突?我在仪表板中看到了应用程序的Android版本,似乎工作正常。这是一个应用程序,最初是一个Xamarin应用程序,编译到两个平台,其中没有纳入Fabric / Crashlytics。我们现在已经在每个平台上编写了本机应用程序,并且都使用了Fabric / Crashlytics。

由于这是两个商店中预先存在的应用程序,因此我们无法更改应用程序的bundleID。

4 个答案:

答案 0 :(得分:4)

在调用任何Crashlytics方法之前,请确保使用Fabric初始化Crashlytics:

Fabric.with([Crashlytics.self])

答案 1 :(得分:3)

我经常错过的一步是确保您已在目标上添加构建阶段:

"${PODS_ROOT}/Fabric/run" ${FABRIC_API_KEY} ${FABRIC_BUILD_SECRET}

并使用您的密钥和密码替换${FABRIC_API_KEY}${FABRIC_BUILD_SECRET},或为每个密码添加自定义构建设置。

答案 2 :(得分:1)

很明显,在某些情况下,Crashlytics不会自动激活新应用,即使它们均已正确编码且数据正进入其服务器,它们也不会出现在您的应用列表下。在这种情况下,请发送电子邮件至Crashlytics支持(support@fabric.io),其中包含有关该应用程序的info.plist条目的副本,他们将为您激活该电子邮件。我不得不这样做多次,尤其是对于应用程序扩展。

答案 3 :(得分:0)

当我终于找到适合自己的情况时,该错误是完全正确的,但并不明显。

我在各种测试目标中看到了这些错误,在这些测试目标中,我们测试的代码使用的是名为CLSNSLogv()的自定义日志记录包装程序,但是该测试实际上并未通过AppDelegate,因此未初始化速溶药。尝试了几件事之后,我确信它可以作为应用程序执行时起作用,但是在我们的配置中,它在单元测试配置下不起作用。

无论如何,我可能会在测试期间更改自定义包装,以绕过CLSNSLogv()。使用该功能的最大好处是当设备崩溃时,因此我们不会丢失任何东西。