在我的AppDelegate中,我打电话给
[Fabric with:@[CrashlyticsKit]];
一切正常。现在我将我的代码拉到另一台机器上,同一行给出了以下错误:
*** Terminating app due to uncaught exception 'FabricException', reason: '[Fabric] Value of Info.plist key "Fabric" must be a NSDictionary.'
我不知道我项目中的任何补充内容。这个错误可能指的是什么以及如何修复它?
答案 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。
不要在.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;建立。见下图:
答案 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)