Crashlytics についてのトラブルシューティングとよくある質問


このページでは、Crashlytics の使用に関するトラブルシューティングのヘルプ情報と、よくある質問への回答を紹介します。お探しの情報が見つからない場合や、サポートが必要な場合は、Firebase サポートにお問い合わせください。

一般的なトラブルシューティングとよくある質問

Firebase コンソールの [問題] テーブルに一覧表示される問題には、2 つの異なる形式があります。また、問題内に「バリアント」と呼ばれる特徴が存在する場合もあります。その理由を説明します。

2023 年初頭、Google はイベントをグループ化するための向上した分析エンジンをリリースしました。このリリースでは、設計の更新が行われ、新しい問題向けの高度な機能(バリアントなど)が含まれています。詳しくは、最近のブログ投稿をご覧ください。最新情報については以下からもご確認いただけます。

Crashlytics は、アプリのすべてのイベント(クラッシュ、致命的でないイベント、ANR など)を分析し、問題と呼ばれるイベントのグループを作成します。1 つの問題の中のすべてのイベントには共通の障害点があります。

イベントを問題としてグループ化するために、向上した分析エンジンでは、スタック トレース内のフレーム、例外メッセージ、エラーコード、その他のプラットフォームまたはエラータイプの特性など、イベントの多くの要素を確認するようになりました。

ただし、このようにグループ化されたイベントの中には、障害に至るまでのスタック トレースが異なるものが含まれることがあります。スタック トレースが異なる場合は、根本原因が異なる可能性があります。一つの問題の中のこの違いを表現するため、問題の中にバリアントが作成されるようになりました。個々のバリアントは、一つの問題の中に含まれ、同じ障害点と類似のスタック トレースを持つイベントのサブグループです。バリアントによって、問題の中の最も一般的なスタック トレースをデバッグし、異なる根本原因によって障害が発生しているかどうかを判断できます。

改良点は以下のとおりです。

  • [問題] の行に表示されるメタデータを改善
    アプリで問題を簡単に把握し、優先順位を設定できるようになりました。

  • 問題の重複の低減
    行番号を変更しても新しい問題は発生しません。

  • さまざまな根本原因による複雑な問題のデバッグが容易に
    バリアントを使用して、問題内で最も一般的なスタック トレースをデバッグできます。

  • より有意義なアラートとシグナル
    新しい問題は実際の新しいバグを表すようになりました。

  • 検索機能の強化
    それぞれの問題に、例外タイプやパッケージ名など、検索可能なメタデータが追加されました。

改良された機能の提供の詳細は次のとおりです。

  • アプリから新しいイベントを受け取ると、既存の問題と一致するかどうかが確認されます。

  • 一致するものがない場合は、よりスマートなイベント グループ アルゴリズムをイベントに自動的に適用し、改良されたメタデータ設計を使って新しい問題を作成します。

これは、イベントのグループ分けに関する最初の大きなアップデートです。フィードバックがある場合や問題が発生した場合は、レポートに記入してお知らせください。

パンくずリストのログが表示されない場合は、アプリの Google Analytics の構成を確認することをおすすめします。次の要件を満たしていることを確認してください。

  • Firebase プロジェクトで Google Analytics を有効にしています。

  • Google Analyticsデータ共有を有効にしている。この設定の詳細については、アナリティクスのデータ共有設定を管理するをご覧ください。

  • アプリに しました。Crashlytics SDK に加えて、この SDK も追加する必要があります。

  • アプリで使用するすべてのプロダクトで を使用しています。

ベロシティ アラートが表示されない場合は、 を使用していることを確認してください。

クラッシュの影響を受けていない指標(クラッシュの影響を受けていないユーザーやセッションなど)が表示されない場合や、信頼性の低い指標が表示される場合は、次の点を確認してください。

  • を使用している。

  • データ収集の設定がクラッシュの影響を受けていない指標の品質に影響していない。

    • 自動クラッシュ レポートを無効にしてオプトイン レポートを有効にした場合、クラッシュ情報は、データ収集を明示的にオプトインしたユーザーからのみ Crashlytics に送信されます。そのため、Crashlytics にはオプトインしたユーザーのクラッシュ情報のみが含まれるため(すべてのユーザーではない)、クラッシュの影響を受けていない指標の精度が影響を受けます。つまり、クラッシュの影響を受けていない指標の信頼性が低下し、アプリの全体的な安定性を反映しなくなる可能性があります。

    • データの自動収集を無効にしている場合は、sendUnsentReports を使用して、デバイス上のキャッシュに保存されたレポートを Crashlytics に送信できます。この方法を使用すると、クラッシュデータは Crashlytics に送信されますが、セッションデータは送信されません。そのため、コンソール グラフには、クラッシュが発生していない指標の値が低い値またはゼロ値として表示されます。

クラッシュの影響を受けていない指標についてをご覧ください。

ノートを使用すると、特定の問題に関する質問やステータスの更新などについて、プロジェクト メンバーがコメントを残すことができます。

ノートには、投稿したメンバーの Google アカウントのメールアドレスがラベル付けされます。このメールアドレスは、ノートを見ることができるプロジェクト メンバー全員に対して、ノートとともに表示されます。

ノートを表示、書き込み、削除するために必要なアクセス権は次のとおりです。

統合

プロジェクトで Google Mobile Ads SDK と Crashlytics を併用している場合は、例外ハンドラの登録時にクラッシュ レポート機能が干渉している可能性があります。この問題を解決するには、disableSDKCrashReporting を呼び出して Mobile Ads SDK でクラッシュ レポート機能をオフにしてください。

Crashlytics を BigQuery にリンクすると、作成される新しいデータセットは、Firebase プロジェクトのロケーションに関係なく自動的に米国に配置されます。

プラットフォーム サポート

問題の回帰

以前にクローズした問題が再発して Crashlytics が新しいレポートを受け取った場合に、対象の問題で回帰が発生したことになります。回帰が発生した問題は、アプリに適した方法で対応できるよう Crashlytics によって自動的に再オープンされます。

次のような場合、Crashlytics は問題を回帰として分類します。

  1. Crashlytics が初めて、クラッシュ「A」に関するクラッシュ レポートを受け取りました。Crashlytics は、そのクラッシュに対応する問題(問題「A」)をオープンしました。
  2. あなたはこのバグを速やかに修正し、問題「A」をクローズしてから、アプリの新しいバージョンをリリースしました。
  3. 問題をクローズした後で、Crashlytics が問題「A」に関する別のレポートを受け取りました。
    • このレポートが、この問題をクローズしたときに Crashlytics で認識されていたバージョン(つまり、なんらかのクラッシュに関するレポートを送信したことがあるバージョン)のアプリから送信されたものである場合は、Crashlytics は問題が回帰であると見なしません。この問題はクローズのままです。
    • このレポートが、この問題をクローズしたときに Crashlytics で認識されていなかったバージョン(つまりクラッシュに関するレポートを以前に送信したことがないバージョン)のアプリから送信されたものである場合、Crashlytics は問題を回帰と見なして再オープンします。

問題の回帰が発生すると、回帰検出アラートが送信されます。つまり回帰シグナルを問題に追加して、Crashlytics が問題を再オープンしたことを知らせます。この回帰アルゴリズムによって問題を再オープンしたくない場合は、問題をクローズする代わりに「ミュート」します。

レポートを送信したアプリのバージョンが、問題をクローズした時点でクラッシュ レポートを一度も送信したことのない古いバージョンである場合、Crashlytics は問題の回帰が発生したと見なし、その問題を再オープンします。

このような状況は、バグを修正し、新しいバージョンのアプリをリリースしたにもかかわらず、バグが修正されていない古いバージョンを利用しているユーザーがいる場合に発生することがあります。問題をクローズした時点でクラッシュ レポートを一度も送信したことのない、古いバージョンのアプリがまだ使用されている場合、そのバージョンでバグが発生してクラッシュ レポートが送信されると、問題の回帰がトリガーされます。

この回帰アルゴリズムによって問題を再オープンしたくない場合は、問題をクローズする代わりに「ミュート」します。