iOS:Crashlytics在Init上崩溃

时间:2015-05-28 17:32:30

标签: ios objective-c crashlytics

在我的AppDelegate中,我打电话给

[Fabric with:@[CrashlyticsKit]];

一切正常。现在我将我的代码拉到另一台机器上,同一行给出了以下错误:

*** Terminating app due to uncaught exception 'FabricException', reason: '[Fabric] Value of Info.plist key "Fabric" must be a NSDictionary.'

我不知道我项目中的任何补充内容。这个错误可能指的是什么以及如何修复它?

8 个答案:

答案 0 :(得分:31)

Fabric安装时会自动将大量文本插入应用程序的plist中。这些是必不可少的,如果它们不存在,Fabric会在初始化时抛出异常。

不幸的是它实际上并没有告诉你这样做,所以我们遇到了一个项目的崩溃,其中plist是由一个工具自动生成的 - 它覆盖了Fabric添加的内容。

作为参考,这是当前版本中plist的Fabric部分(不确定版本号的位置,但截至2015年6月15日的最新版本)。

<key>Fabric</key>
<dict>
        <key>APIKey</key>
        <string>your-api-key</string>
        <key>Kits</key>
        <array>
                <dict>
                        <key>KitInfo</key>
                        <dict/>
                        <key>KitName</key>
                        <string>Crashlytics</string>
                </dict>
        </array>
</dict>

答案 1 :(得分:5)

解决此问题的另一种方法是使用Fabric App。

  1. 启动Fabric应用并使用您的用户ID登录。
  2. 点击添加新应用
  3. 选择.xcodeproj文件并按照屏幕说明进行操作
  4. 不要在.info plist文件中手动添加Fabric密钥

答案 2 :(得分:2)

该解决方案要求我们更新Crashlytics。我们设置的其他目标有最新版本,并且工作正常,但最新更新(本帖时间为3.0.9)似乎解决了这个问题。

答案 3 :(得分:2)

它恰好发生在我身上,这就是我解决它的方式(感谢所有人的引导。)

上下文:当你的Xcode项目中有多个不同的目标时,通过在Mac Fabric应用程序中创建一个新应用程序显然是不够的。

解决方案:如果您选择相同的项目(例如,为Pro版本设置),Fabric应用程序无法正确触摸Pro的.plist。 因此,只需复制非专业版.plist的Fabric字典条目,并将其粘贴到Pro版本中。 API密钥在组织级别上,因此这是正确的方法。

答案 4 :(得分:0)

只需将Fabric键类型从String更改为Dictionary。转到your-project-info.plist&gt; Fabric&gt; kits&gt; item0&gt; KitName并将类型更改为Dictionary。问题解决了我

答案 5 :(得分:0)

可能这看起来很奇怪,但同样的问题发生在我身上,这就是我解决问题的方法。我有一个具有多个目标和方案的项目,我还有两个额外的目标,用于单元测试和UI测试。解决方案是从&#34; Analyze&#34;,&#34; Run&#34;,&#34; Profile&#34;中取消选中这些测试目标。和&#34;存档&#34; “管理方案”下的标签&gt;编辑&gt;建立。见下图:

enter image description here

答案 6 :(得分:0)

对我来说原因是:

在创建新目标时,会自动创建新的Info.plist文件。 因此,您需要将Fabric属性放到所有Info.plist文件中。

<key>Fabric</key>
<dict>
    <key>APIKey</key>
    <string>43336ce109856f4452829a8e6b6783886fefb</string>
    <key>Kits</key>
    <array>
        <dict>
            <key>KitInfo</key>
            <dict/>
            <key>KitName</key>
            <string>Crashlytics</string>
        </dict>
    </array>
</dict>

起初我错过了,并且只将此代码放到第一个 - 初始Info.plist文件中。

答案 7 :(得分:0)

我的两分钱: 在我的所有我添加错误的“myAppTests”而不是“myApp”plist。 尤金也指出,要小心添加每个.plist。