AppDelegateで、
[Fabric with:@[CrashlyticsKit]];
そして、すべてが正常に動作します。ここで、コードを別のマシンにプルしましたが、同じ行で次のエラーが発生します。
*** Terminating app due to uncaught exception 'FabricException', reason: '[Fabric] Value of Info.plist key "Fabric" must be a NSDictionary.'
私は自分のプロジェクトのplistに追加されていることに気づいていません。このエラーが何を指しているのか、そしてそれを修正する方法はありますか?
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つの方法。
.infoplistファイルにFabricキーを手動で追加しないでください
それはちょうど私に起こりました、そしてこれは私がそれを解決した方法です(みんなへのリードに感謝します)。
Context:Xcodeプロジェクトに複数の異なるターゲットがある場合、MacFabricアプリで新しいアプリを作成するだけでは明らかに不十分です。
解決策:同じプロジェクトを選択した場合(たとえば、Proバージョン用に作成する場合)、FabricアプリがProの.plistに正しくアクセスしません。したがって、非プロバージョンの.plistのFabricディクショナリエントリをコピーして、プロバージョンに貼り付けるだけです。 APIキーは組織レベルで実行されるため、これが正しい方法です。
このソリューションでは、Crashlyticsを更新する必要がありました。設定した他のターゲットには最新バージョンがあり、それらは正常に機能していましたが、最新のアップデート(この投稿の時点では3.0.9)で問題が修正されているようです。
私にとっての理由は:
新しいターゲットを作成している間、新しい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ファイル)にのみ配置しました。
私の2セント:「myApp」のplistではなく「myAppTests」のplistに間違いを追加します。したがって、Eugeneも指摘したように、すべての.plistを追加するように注意してください。
ファブリックキータイプを文字列から辞書に変更するだけです。 your-project-info.plist> Fabric> kits> item0> KitNameに移動し、タイプをDictionaryに変更します。問題は解決しました