iOS:Crashlytics 在初始化时崩溃
iOS: Crashlytics Crashing on Init
在我的 AppDelegate 中,我调用
[Fabric with:@[CrashlyticsKit]];
一切正常。现在我将我的代码拉到另一台机器上,同一行给我以下错误:
*** Terminating app due to uncaught exception 'FabricException', reason: '[Fabric] Value of Info.plist key "Fabric" must be a NSDictionary.'
我不知道我的项目的 plist 中有任何添加。知道这个错误可能指的是什么以及如何解决它吗?
该解决方案要求我们更新 Crashlytics。我们设置的其他目标有最新版本并且工作正常,但最新更新(3.0.9 在这个 post 时)似乎解决了这个问题。
当您安装 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>
只需将 Fabric 密钥类型从字符串更改为字典。转到 your-project-info.plist>Fabric>kits>item0>KitName 并将类型更改为 Dictionary。我的问题已解决
使用 Fabric App 解决此问题的另一种方法。
- 启动 Fabric 应用并使用您的用户 ID 登录。
- 点击“添加新应用”
- Select 您的 .xcodeproj 文件并按照屏幕上的说明进行操作
不要在您的 .info plist 文件中手动添加 Fabric 密钥
这件事发生在我身上,我就是这样解决的(感谢大家提供线索。)
Context:当您的 Xcode 项目中有多个不同的目标时,通过在 Mac Fabric 应用程序中创建一个新应用程序,显然,还不够。
解决方案:如果您select同一个项目(例如,为您的 Pro 版本制作它)Fabric 应用程序没有正确接触 Pro 的 .plist .
因此,只需复制非专业版 .plist 的 Fabric 字典条目并将其粘贴到专业版中。
API 关键在组织级别,所以这是正确的方法。
可能这看起来很奇怪,但同样的问题发生在我身上,这就是我解决问题的方法。我有一个包含多个目标和方案的项目,我还有两个额外的单元测试目标和 UI 测试。解决方案是在管理方案 > 编辑 > 构建下的 "Analyse"、"Run"、"Profile" 和 "Archive" 选项卡中取消选中这些测试目标。见下图:
对我来说原因是:
当您创建新目标时 - 会自动创建一个新的 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 文件中。
我的两分钱:
在我的所有内容中,我错误地添加到 "myAppTests" 的 plist 而不是 "myApp" plist。
正如 Eugene 指出的那样,请小心添加每个 .plist。
在我的 AppDelegate 中,我调用
[Fabric with:@[CrashlyticsKit]];
一切正常。现在我将我的代码拉到另一台机器上,同一行给我以下错误:
*** Terminating app due to uncaught exception 'FabricException', reason: '[Fabric] Value of Info.plist key "Fabric" must be a NSDictionary.'
我不知道我的项目的 plist 中有任何添加。知道这个错误可能指的是什么以及如何解决它吗?
该解决方案要求我们更新 Crashlytics。我们设置的其他目标有最新版本并且工作正常,但最新更新(3.0.9 在这个 post 时)似乎解决了这个问题。
当您安装 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>
只需将 Fabric 密钥类型从字符串更改为字典。转到 your-project-info.plist>Fabric>kits>item0>KitName 并将类型更改为 Dictionary。我的问题已解决
使用 Fabric App 解决此问题的另一种方法。
- 启动 Fabric 应用并使用您的用户 ID 登录。
- 点击“添加新应用”
- Select 您的 .xcodeproj 文件并按照屏幕上的说明进行操作
不要在您的 .info plist 文件中手动添加 Fabric 密钥
这件事发生在我身上,我就是这样解决的(感谢大家提供线索。)
Context:当您的 Xcode 项目中有多个不同的目标时,通过在 Mac Fabric 应用程序中创建一个新应用程序,显然,还不够。
解决方案:如果您select同一个项目(例如,为您的 Pro 版本制作它)Fabric 应用程序没有正确接触 Pro 的 .plist . 因此,只需复制非专业版 .plist 的 Fabric 字典条目并将其粘贴到专业版中。 API 关键在组织级别,所以这是正确的方法。
可能这看起来很奇怪,但同样的问题发生在我身上,这就是我解决问题的方法。我有一个包含多个目标和方案的项目,我还有两个额外的单元测试目标和 UI 测试。解决方案是在管理方案 > 编辑 > 构建下的 "Analyse"、"Run"、"Profile" 和 "Archive" 选项卡中取消选中这些测试目标。见下图:
对我来说原因是:
当您创建新目标时 - 会自动创建一个新的 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 文件中。
我的两分钱: 在我的所有内容中,我错误地添加到 "myAppTests" 的 plist 而不是 "myApp" plist。 正如 Eugene 指出的那样,请小心添加每个 .plist。