このクイックスタートでは、Firebase コンソールで包括的なクラッシュ レポートを取得できるように、Crashlytics Flutter プラグインを使用してアプリで Firebase Crashlytics を設定する方法について説明します。
Crashlytics の設定には、コマンドライン ツールと IDE の両方を使用する必要があります。セットアップを完了するには、強制的にテスト例外をスローして、最初のクラッシュ レポートを Firebase に送信する必要があります。
あなたが始める前に
まだ行っていない場合は、Flutter プロジェクトでFirebase を構成して初期化します。
推奨: クラッシュ フリー ユーザー、ブレッドクラム ログ、ベロシティ アラートなどの機能を取得するには、Firebase プロジェクトで Google アナリティクスを有効にする必要があります。
Crashlytics でサポートされているすべての Android および Apple プラットフォーム (watchOS を除く) は、Google アナリティクスのこれらの機能を利用できます。
Firebase プロジェクトで Google アナリティクスが有効になっていることを確認します。[
] > [プロジェクト設定] > [統合] タブに移動し、Google アナリティクスの画面上の指示に従います。
ステップ 1 : Crashlytics を Flutter プロジェクトに追加する
Flutter プロジェクトのルートから次のコマンドを実行して、Crashlytics Flutter プラグインをインストールします。
flutter pub add firebase_crashlytics
Flutter プロジェクトのルート ディレクトリから、次のコマンドを実行します。
flutterfire configure
このコマンドを実行すると、Flutter アプリの Firebase 構成が最新の状態になり、Android の場合は、必要な Crashlytics Gradle プラグインがアプリに追加されます。
完了したら、Flutter プロジェクトを再構築します。
flutter run
(オプション) 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.onError
をFirebaseCrashlytics.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 ダッシュボードで初期データを確認するには、強制的にテスト例外をスローする必要があります。
テスト例外を強制的にスローするために使用できるコードをアプリに追加します。
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true)
を呼び出すエラー ハンドラーを最上位のZone
に追加した場合は、次のコードを使用して、押されたときにスローされるボタンをアプリに追加できます。テスト例外:TextButton( onPressed: () => throw Exception(), child: const Text("Throw Test Exception"), ),
アプリをビルドして実行します。
アプリの最初のレポートを送信するために、強制的にテスト例外をスローします。
テスト デバイスまたはエミュレーターからアプリを開きます。
アプリで、上記のコードを使用して追加したテスト例外ボタンを押します。
Firebase コンソールのCrashlytics ダッシュボードに移動して、テストのクラッシュを確認します。
コンソールを更新しても 5 分経ってもテスト クラッシュが表示されない場合は、デバッグ ログを有効にして、アプリがクラッシュ レポートを送信しているかどうかを確認してください。
以上です! Crashlytics は現在、アプリのクラッシュを監視しており、Android では致命的でないエラーと ANR を監視しています。 Crashlytics ダッシュボードにアクセスして、すべてのレポートと統計を表示して調査します。
次のステップ
オプトイン レポート、ログ、キー、および追加の非致命的エラーの追跡を追加して、クラッシュ レポートの設定をカスタマイズします。
Google Play と統合して、Crashlytics ダッシュボードで直接 Google Play トラックによって Android アプリのクラッシュ レポートをフィルタリングできるようにします。これにより、ダッシュボードを特定のビルドに集中させることができます。
Android Studio (Electric Eel 2022.1.1 以降で利用可能) のApp Quality Insightsウィンドウを使用して、スタック トレースとクラッシュ統計をコードとともに表示します。