Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

FirebaseCrashlyticsを使い始める

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

このクイックスタートでは、Firebase コンソールで包括的なクラッシュ レポートを取得できるように、Crashlytics Flutter プラグインを使用してアプリで Firebase Crashlytics を設定する方法について説明します。

Crashlytics の設定には、コマンドライン ツールと IDE の両方を使用する必要があります。セットアップを完了するには、強制的にテスト例外をスローして、最初のクラッシュ レポートを Firebase に送信する必要があります。

あなたが始める前に

  1. まだ行っていない場合は、Flutter プロジェクトでFirebase を構成して初期化します。

  2. 推奨: クラッシュ フリー ユーザー、ブレッドクラム ログ、ベロシティ アラートなどの機能を取得するには、Firebase プロジェクトで Google アナリティクスを有効にする必要があります。

    Crashlytics でサポートされているすべての Android および Apple プラットフォーム (watchOS を除く) は、Google アナリティクスのこれらの機能を利用できます。

    Firebase プロジェクトで Google アナリティクスが有効になっていることを確認します。[ ] > [プロジェクト設定] > [統合] タブに移動し、Google アナリティクスの画面上の指示に従います。

ステップ 1 : Crashlytics を Flutter プロジェクトに追加する

  1. Flutter プロジェクトのルートから次のコマンドを実行して、Crashlytics Flutter プラグインをインストールします。

    flutter pub add firebase_crashlytics
    
  2. Flutter プロジェクトのルート ディレクトリから、次のコマンドを実行します。

    flutterfire configure
    

    このコマンドを実行すると、Flutter アプリの Firebase 構成が最新の状態になり、Android の場合は、必要な Crashlytics Gradle プラグインがアプリに追加されます。

  3. 完了したら、Flutter プロジェクトを再構築します。

    flutter run
    
  4. (オプション) Flutter プロジェクトで--split-debug-infoフラグ(およびオプションで--obfuscateフラグ)を使用している場合は、 Firebase CLI (v.11.9.0+)を使用して Android シンボルをアップロードする必要があります。

    Flutter プロジェクトのルート ディレクトリから、次のコマンドを実行します。

    firebase crashlytics:symbols:upload --app=APP_ID PATH/TO/symbols

    PATH/TO /symbolsディレクトリは、アプリケーションのビルド時に--split-debug-infoフラグに渡すディレクトリと同じです。

ステップ 2 : クラッシュ ハンドラーを構成する

FlutterError.onErrorFirebaseCrashlytics.instance.recordFlutterFatalErrorでオーバーライドすることにより、Flutter フレームワーク内でスローされたすべてのエラーを自動的にキャッチできます。

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Firebase.initializeApp();

  // Pass all uncaught "fatal" errors from the framework to Crashlytics
  FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;

  runApp(MyApp());
}

Flutter フレームワークで処理されない非同期エラーをキャッチするには、 PlatformDispatcher.instance.onErrorを使用します。

Future<void> main() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp();
    FlutterError.onError = (errorDetails) {
      FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
    };
    // Pass all uncaught asynchronous errors that aren't handled by the Flutter framework to Crashlytics
    PlatformDispatcher.instance.onError = (error, stack) {
      FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
      return true;
    };
    runApp(MyApp());

}

他の種類のエラーを処理する方法の例については、「クラッシュ レポートをカスタマイズする」を参照してください。

ステップ 3 : テスト クラッシュを強制してセットアップを終了する

Crashlytics の設定を完了し、Firebase コンソールの Crashlytics ダッシュボードで初期データを確認するには、強制的にテスト例外をスローする必要があります。

  1. テスト例外を強制的にスローするために使用できるコードをアプリに追加します。

    FirebaseCrashlytics.instance.recordError(error, stack, fatal: true)を呼び出すエラー ハンドラーを最上位のZoneに追加した場合は、次のコードを使用して、押されたときにスローされるボタンをアプリに追加できます。テスト例外:

    TextButton(
        onPressed: () => throw Exception(),
        child: const Text("Throw Test Exception"),
    ),
    
  2. アプリをビルドして実行します。

  3. アプリの最初のレポートを送信するために、強制的にテスト例外をスローします。

    1. テスト デバイスまたはエミュレーターからアプリを開きます。

    2. アプリで、上記のコードを使用して追加したテスト例外ボタンを押します。

  4. Firebase コンソールのCrashlytics ダッシュボードに移動して、テストのクラッシュを確認します。

    コンソールを更新しても 5 分経ってもテスト クラッシュが表示されない場合は、デバッグ ログを有効にして、アプリがクラッシュ レポートを送信しているかどうかを確認してください。


以上です! Crashlytics は現在、アプリのクラッシュを監視しており、Android では致命的でないエラーと ANR を監視しています。 Crashlytics ダッシュボードにアクセスして、すべてのレポートと統計を表示して調査します。

次のステップ