このガイドでは、Firebase Crashlytics SDK を使用してクラッシュ レポートをカスタマイズする方法について説明します。デフォルトでは、Crashlytics はアプリのすべてのユーザーのクラッシュ レポートを自動的に収集します (自動クラッシュ レポートをオフにして、代わりにユーザーのオプトイン レポートを有効にすることができます)。 Crashlytics には、すぐに使用できる 4 つのロギング メカニズムが用意されています。カスタム キー、カスタム ログ、ユーザー識別子、キャッチされた例外です。
カスタム キーを追加する
カスタム キーは、クラッシュにつながるアプリの特定の状態を取得するのに役立ちます。任意のキーと値のペアをクラッシュ レポートに関連付けてから、カスタム キーを使用して、Firebase コンソールでクラッシュ レポートを検索およびフィルタリングできます。
Crashlytics ダッシュボードで、カスタム キーに一致する課題を検索できます。
コンソールで特定の問題を確認している場合、各イベントに関連付けられているカスタム キーを表示し ( [キー] サブタブ)、カスタム キーでイベントをフィルター処理することもできます (ページ上部の [フィルター] メニュー)。
キーと値のペアを設定するには、 setCustomKey
インスタンス メソッドを使用します。 setCustomKey
は、 value
パラメータがプリミティブまたはString
引数を受け入れるようにオーバーロードされていることに注意してください。ここではいくつかの例を示します。
Kotlin+KTX
val crashlytics = Firebase.crashlytics crashlytics.setCustomKeys { key("my_string_key", "foo") // String value key("my_bool_key", true) // boolean value key("my_double_key", 1.0) // double value key("my_float_key", 1.0f) // float value key("my_int_key", 1) // int value }
Java
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); crashlytics.setCustomKey("my_string_key", "foo" /* string value */); crashlytics.setCustomKey("my_bool_key", true /* boolean value */); crashlytics.setCustomKey("my_double_key", 1.0 /* double value */); crashlytics.setCustomKey("my_float_key", 1.0f /* float value */); crashlytics.setCustomKey("my_int_key", 1 /* int value */);
キーを呼び出して別の値に設定することで、既存のキーの値を変更することもできます。例えば:
Kotlin+KTX
val crashlytics = Firebase.crashlytics crashlytics.setCustomKeys { key("current_level", 3) key("last_UI_action", "logged_in") }
Java
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); crashlytics.setCustomKey("current_level", 3); crashlytics.setCustomKey("last_UI_action", "logged_in");
setCustomKeys
CustomKeysAndValues
メソッドに渡すことで、キーと値のペアを一括で追加します。
Kotlin+KTX
Kotlin の場合、既存の機能はCustomKeysAndValues
ビルダーを使用するよりも簡単です。
crashlytics.setCustomKeys { key("str_key", "hello") key("bool_key", true) key("int_key", 1) key("long_key", 1L) key("float_key", 1.0f) key("double_key", 1.0) }
Java
CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder() .putString("string key", "string value") .putString("string key 2", "string value 2") .putBoolean("boolean key", True) .putBoolean("boolean key 2", False) .putFloat("float key", 1.01) .putFloat("float key 2", 2.02) .build(); FirebaseCrashlytics.getInstance().setCustomKeys(keysAndValues);
カスタム ログ メッセージを追加する
クラッシュに至るイベントのコンテキストをより詳細に把握するために、カスタム Crashlytics ログをアプリに追加できます。 Crashlytics はログをクラッシュ データに関連付け、 Firebase コンソールの Crashlytics ページの [ログ] タブに表示します。
log
を使用して問題を特定します。例えば:
Kotlin+KTX
Firebase.crashlytics.log("message")
Java
FirebaseCrashlytics.getInstance().log("message");
ユーザー識別子を設定する
問題を診断するには、どのユーザーが特定のクラッシュを経験したかを知ることが役立つことがよくあります。 Crashlytics には、クラッシュ レポートでユーザーを匿名で識別する方法が含まれています。
レポートにユーザー ID を追加するには、ID 番号、トークン、またはハッシュ値の形式で一意の識別子を各ユーザーに割り当てます。
Kotlin+KTX
Firebase.crashlytics.setUserId("user123456789")
Java
FirebaseCrashlytics.getInstance().setUserId("user123456789");
設定後にユーザー識別子をクリアする必要がある場合は、値を空白文字列にリセットします。ユーザー ID をクリアしても、既存の Crashlytics レコードは削除されません。ユーザー ID に関連付けられたレコードを削除する必要がある場合は、 Firebase サポートにお問い合わせください。
(Android NDK のみ) NDK クラッシュ レポートにメタデータを追加する
カスタム キー、カスタム ログ、ユーザー識別子などのメタデータを NDK クラッシュ レポートに追加するために、必要に応じて C++ コードにcrashlytics.h
ヘッダーを含めることができます。これらのオプションはすべて、上記のこのページで説明されています。
crashlytics.h
は、 Firebase Android SDK GitHub リポジトリでヘッダーのみの C++ ライブラリとして利用できます。
NDK C++ API の使用方法については、ヘッダー ファイルのコメントを参照してください。
致命的でない例外を報告する
Crashlytics では、アプリのクラッシュを自動的に報告するだけでなく、致命的ではない例外を記録して、アプリの次回起動時に送信することができます。
アプリのcatch
ブロックに致命的ではない例外を記録するには、 recordException
メソッドを使用します。例えば:
Kotlin+KTX
try { methodThatThrows() } catch (e: Exception) { Firebase.crashlytics.recordException(e) // handle your exception here }
Java
try { methodThatThrows(); } catch (Exception e) { FirebaseCrashlytics.getInstance().recordException(e); // handle your exception here }
記録されたすべての例外は、致命的ではない問題として Firebase コンソールに表示されます。問題の概要には、クラッシュから通常取得するすべての状態情報と、Android のバージョンおよびハードウェア デバイスごとの内訳が含まれています。
Crashlytics は専用のバックグラウンド スレッドで例外を処理し、アプリのパフォーマンスへの影響を最小限に抑えます。ユーザーのネットワーク トラフィックを削減するために、Crashlytics はログに記録された例外をまとめてバッチ化し、アプリの次回起動時に送信します。
オプトイン レポートを有効にする
デフォルトでは、Crashlytics はアプリのすべてのユーザーのクラッシュ レポートを自動的に収集します。ユーザーが送信するデータをより詳細に制御できるようにするには、自動レポートを無効にし、コードで選択した場合にのみデータを Crashlytics に送信することで、オプトイン レポートを有効にすることができます。
AndroidManifest.xml
ファイルのapplication
ブロックで、meta-data
タグを追加して自動収集をオフにします。<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
実行時に Crashlytics データ コレクションのオーバーライドを呼び出して、選択したユーザーのコレクションを有効にします。オーバーライド値はアプリの起動後も保持されるため、Crashlytics は自動的にレポートを収集できます。自動クラッシュ レポートをオプトアウトするには、オーバーライド値として
false
を渡します。false
に設定すると、新しい値はアプリの次回の実行まで適用されません。Kotlin+KTX
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Java
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
Crash Insights データの管理
Crash Insights は、匿名化されたスタック トレースを他の Firebase アプリからのトレースと比較し、問題がより大きな傾向の一部であるかどうかを知らせることで、問題の解決に役立ちます。多くの問題について、Crash Insights はクラッシュのデバッグに役立つリソースも提供します。
Crash Insights は、集約されたクラッシュ データを使用して、一般的な安定性の傾向を特定します。アプリのデータを共有したくない場合は、 Firebase コンソールの Crashlytics の問題リストの上部にあるCrash Insightsメニューから Crash Insights をオプトアウトできます。