this 公式指示を使用してCrashlitycsをインストールしました。
デバッグとリリースの両方でデバッグ情報フォーマットを「dSYMファイルを使用したDWARF」に設定し、ビットコードを無効に設定しました(一部の人はそれが役立つと書いています):
AppDelegate:
Fabric.sharedSDK().debug = true
Fabric.with([Crashlytics.self])
クラッシュをシミュレートするには
Crashlytics.sharedInstance().crash()
そして
var ggg: Int!
print(ggg)
Crashliticsはセッションに関する情報を収集します。たとえば、バンドルバージョン情報を更新します。
したがって、Crashliticsとの接続は機能します。ただし、クラッシュ情報は空です。
XCode 8とiOS 9/10を使用しています。私が間違っているのは何ですか?
編集:
XCodeデバッガー接続なしのシミュレーターおよびデバイスでテストしました(つまり、サミュレーター/デバイス画面から起動します)
最後に、クラッシュから7〜8時間後にCrashlyticsのレポートを受け取りました。 ドキュメント :
数分以内に、Fabric Dashboardにクラッシュが表示されます。
しかし、私は待っていたすべてのクラッシュを受けませんでした。私の実験中に、Crashlyticsを初期化するさまざまな方法を試しました。
Fabric.with([Crashlytics.self])
and
Fabric.with([Crashlytics.self()])
それが理由でしょうか?同様の未回答の question も見つかりました。
次の条件を確認し、
Crashlytics SDK行が他のすべてのサードパーティSDK行の後にあることを確認してください。 (appDidFinishLaunchingメソッドで最後に呼び出される必要があります。)
強制的にクラッシュしてから、アプリを再起動します。 Xcodeは、クラッシュレポートを傍受しないように切断する必要があります。 Xcodeを切断するには、指示 here に従ってください。
[Crashlytics sharedInstance] crash]を使用している場合;クラッシュをテストするには、appDidFinishLaunchingメソッドにないことを確認してください。
これらはサポートセクションですでに言及されています、ここに追加のものがあります-
はいの場合、次の手順を実行します
これにより、関連付けられているすべてのUUIDが表示されます。また、リストされたUUIDが欠落しているdSYM idに記載されているUUIDと一致する場合は、dSYMフォルダーを圧縮してcrashlyticsの欠落しているdSYMセグメントにアップロードします。
オーガナイザーから抽出したdSYMファイルに正しいUUIDが含まれていないことがあるため、この手順は重要です。そして、間違ったものをアップロードした後、その更新を待ちます。したがって、正しいdSYMファイルをアップロードしていることを確認することをお勧めします。
前述のもの以外に、ビルド設定のビットコードプロパティとデバッグ情報形式もクラッシュレポートに影響します。
Xcodeからではなく、アプリを実行する必要があります。
デバイスを使用している場合は、USBに接続せずにアプリを起動するだけです。シミュレーターを使用している場合は、Xcodeからアプリの実行を停止します。次に、代わりにマウスクリックで再度開きます。
次に、Crashlytics.sharedInstance().crash()
を呼び出すbuttonPress
またはfunction
に移動します。
次に、reopenクラッシュ後にアプリを再度(必要に応じてコンソールに接続できます)crashlyticsはクラッシュレポートを直前に保存するため、この手順は重要ですアプリは終了します。次回アプリを開くと、crashlyticsにレポートが投稿されます。
Docs here は実際にトラブルシューティングの問題も説明しています。
デバッグとリリースの両方で、デバッグ情報の形式が「dSYMファイルを使用したDWARF」であることをビルド設定で再確認します。
アップロードしないクラッシュの別の潜在的な原因は、完了ハンドラーを呼び出さずにCrashlyticsデリゲートを実装することです。
// MARK: CrashlyitcsDelegate
func crashlyticsDidDetectReport(forLastExecution report: CLSReport, completionHandler: @escaping (Bool) -> Void) {
// Last launch we crashed!
}
}
代わりに、次のようになります。
// MARK: CrashlyitcsDelegate
func crashlyticsDidDetectReport(forLastExecution report: CLSReport, completionHandler: @escaping (Bool) -> Void) {
// Last launch we crashed!
completionHandler(true)
}
}