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

FirebaseCrashlyticsを使い始める

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

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

Crashlytics をセットアップするには、Firebase コンソールと IDE の両方でタスクが必要です (Firebase 構成ファイルと Crashlytics SDK の追加など)。セットアップを完了するには、テスト クラッシュを強制して、最初のクラッシュ レポートを Firebase に送信する必要があります。

あなたが始める前に

  1. Firebase を Unity プロジェクトにまだ追加していない場合は、追加します。 Unity プロジェクトがない場合は、サンプル アプリをダウンロードできます。

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

    • 既存の Firebase プロジェクトで Google アナリティクスが有効になっていない場合は、Firebase コンソールの [ ] > [プロジェクト設定] の[統合] タブから Google アナリティクスを有効にすることができます。

    • 新しい Firebase プロジェクトを作成する場合は、プロジェクト作成ワークフローで Google アナリティクスを有効にします。

ステップ 1 : Crashlytics SDK をアプリに追加する

Unity プロジェクトを Firebase プロジェクトに登録したときに、既に Firebase Unity SDK をダウンロードして Crashlytics パッケージを追加している可能性があることに注意してください。

  1. Firebase Unity SDKをダウンロードし、SDK を便利な場所に解凍します。

    Firebase Unity SDK はプラットフォーム固有ではありません。

  2. 開いている Unity プロジェクトで、 Assets > Import Package > Custom Packageに移動します。

  3. 解凍した SDK から、Crashlytics SDK ( FirebaseCrashlytics.unitypackage ) を選択してインポートします。

    サポートされている他の Firebase プロダクトもインポートできます。

  4. [ Unity パッケージのインポート] ウィンドウで、[インポート] をクリックします。

ステップ 2 : Crashlytics を初期化する

  1. 新しい C# スクリプトを作成し、それをシーン内のGameObjectに追加します。

    1. 最初のシーンを開き、 CrashlyticsInitializerという名前の空のGameObjectを作成します。

    2. 新しいオブジェクトのインスペクターで [コンポーネントの追加] をクリックします。

    3. CrashlyticsInitスクリプトを選択して、 CrashlyticsInitializerオブジェクトに追加します。

  2. スクリプトのStartメソッドで Crashlytics を初期化します。

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    // Import Firebase
    using Firebase;
    
    public class CrashlyticsInit : MonoBehaviour {
        // Use this for initialization
        void Start () {
            // Initialize Firebase
            Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
                var dependencyStatus = task.Result;
                if (dependencyStatus == Firebase.DependencyStatus.Available)
                {
                    // Create and hold a reference to your FirebaseApp,
                    // where app is a Firebase.FirebaseApp property of your application class.
                    // Crashlytics will use the DefaultInstance, as well;
                    // this ensures that Crashlytics is initialized.
                    Firebase.FirebaseApp app = Firebase.FirebaseApp.DefaultInstance;
    
                    // Set a flag here for indicating that your project is ready to use Firebase.
                }
                else
                {
                    UnityEngine.Debug.LogError(System.String.Format(
                      "Could not resolve all Firebase dependencies: {0}",dependencyStatus));
                    // Firebase Unity SDK is not safe to use here.
                }
            });
        }
    
      // Update is called once per frame
      void Update()
        // ...
    }

ステップ 3 : (Android のみ)シンボルのアップロードをセットアップする

このセクションの手順は、IL2CPP を使用する Android アプリにのみ必要です。

  • Unity の Mono スクリプト バックエンドを使用する Android アプリの場合、これらの手順は必要ありません。

  • Apple プラットフォーム アプリの場合、これらの手順は必要ありません。これは、Firebase Unity Editor プラグインがシンボルをアップロードするように Xcode プロジェクトを自動的に構成するためです。

Crashlytics の Unity SDK 8.6.1+ には NDK クラッシュ レポートが自動的に含まれます。これにより、Crashlytics は Android での Unity IL2CPPクラッシュを自動的にレポートできます。ただし、Crashlytics ダッシュボードでネイティブ ライブラリ クラッシュのシンボル化されたスタック トレースを表示するには、ビルド時に Firebase CLI を使用してシンボル情報をアップロードする必要があります。

次の手順を実行して、シンボルのアップロードをセットアップします。

  1. 指示に従ってFirebase CLI をインストールします

    CLI を既にインストールしている場合は、必ず最新バージョンに更新してください。

  2. (Android API レベル 30 以上を使用するアプリのみ)アプリのAndroidManifest.xmlテンプレートを更新して、ポインターのタグ付けを無効にします。

    1. Android Player Settings > Publishing Settings > Build > Custom Main Manifestのチェックボックスをオンにします。

    2. Assets/Plugins/Android/AndroidManifest.xmlにあるマニフェスト テンプレートを開きます。

    3. 次の属性をアプリケーション タグに追加します。 <application android:allowNativeHeapPointerTagging="false" ... />

ステップ 4 : プロジェクトをビルドしてシンボルをアップロードする

iOS+ (Apple プラットフォーム)

  1. [ビルド設定] ダイアログから、プロジェクトを Xcode ワークスペースにエクスポートします。

  2. アプリをビルドします。

    Apple プラットフォームの場合、Firebase Unity Editor プラグインは Xcode プロジェクトを自動的に構成して、ビルドごとに Crashlytics 互換のシンボル ファイルを生成して Firebase サーバーにアップロードします。

アンドロイド

  1. [ビルド設定] ダイアログから、次のいずれかを実行します。

    • Android Studio プロジェクトにエクスポートして、プロジェクトをビルドします。また

    • Unity エディターから APK を直接ビルドします。
      ビルドする前に、 [ビルド設定] ダイアログで [ symbols.zip を作成する] チェックボックスがオンになっていることを確認してください。

  2. ビルドが完了したら、Crashlytics 互換のシンボル ファイルを生成し、次の Firebase CLI コマンドを実行して Firebase サーバーにアップロードします。

    firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
    • FIREBASE_APP_ID : Firebase Android アプリ ID (パッケージ名ではありません)
      Firebase Android アプリ ID の例: 1:567383003300:android:17104a2ced0c9b9b

    • PATH/TO/SYMBOLS : CLI によって生成されたシンボル ファイルへのパス

      • Android Studio プロジェクトにエクスポート — PATH/TO/SYMBOLSunityLibrary/symbolsディレクトリであり、Gradle または Android Studio を介してアプリをビルドした後、エクスポートされたプロジェクト ルートに作成されます。

      • APK を Unity 内から直接ビルド — PATH/TO/SYMBOLSは、ビルドが終了したときにプロジェクトのルート ディレクトリに生成された圧縮されたシンボル ファイルのパスです (例: myproject/myapp-1.0-v100.symbols.zip )。

    シンボル ファイルの生成とアップロードに Firebase CLI コマンドを使用するための詳細オプションを表示する

    国旗説明
    --generator=csym

    デフォルトの Breakpad ジェネレーターの代わりに、従来の cSYM シンボル ファイル ジェネレーターを使用します。

    使用はお勧めしません。デフォルトの Breakpad シンボル ファイル ジェネレーターを使用することをお勧めします。

    --generator=breakpad

    Breakpad シンボル ファイル ジェネレーターを使用

    シンボル ファイル生成のデフォルトは Breakpad であることに注意してください。ビルド構成にsymbolGenerator { csym() }を追加し、代わりに Breakpad を使用するようにオーバーライドする場合にのみ、このフラグを使用してください。

    --dry-run

    シンボル ファイルを生成しますが、アップロードしません。

    このフラグは、送信されたファイルの内容を検査する場合に役立ちます。

    --debug追加のデバッグ情報を提供します

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

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

  1. 既存のGameObjectを見つけて、それに次のスクリプトを追加します。このスクリプトは、アプリを実行してから数秒後にテスト クラッシュを引き起こします。

    using System;
    using UnityEngine;
    
    public class CrashlyticsTester : MonoBehaviour {
    
        int updatesBeforeException;
    
        // Use this for initialization
        void Start () {
          updatesBeforeException = 0;
        }
    
        // Update is called once per frame
        void Update()
        {
            // Call the exception-throwing method here so that it's run
            // every frame update
            throwExceptionEvery60Updates();
        }
    
        // A method that tests your Crashlytics implementation by throwing an
        // exception every 60 frame updates. You should see non-fatal errors in the
        // Firebase console a few minutes after running your app with this method.
        void throwExceptionEvery60Updates()
        {
            if (updatesBeforeException > 0)
            {
                updatesBeforeException--;
            }
            else
            {
                // Set the counter to 60 updates
                updatesBeforeException = 60;
    
                // Throw an exception to test your Crashlytics implementation
                throw new System.Exception("test exception please ignore");
            }
        }
    }
    
  2. アプリをビルドし、ビルドが完了したらシンボル情報をアップロードします。

    • iOS+ : Firebase Unity Editor プラグインは、シンボル ファイルをアップロードするように Xcode プロジェクトを自動的に構成します。

    • Android : IL2CPP を使用する Android アプリの場合、Firebase CLI のcrashlytics:symbols:uploadコマンドを実行して、シンボル ファイルをアップロードします。

  3. アプリを実行します。アプリが実行されたら、デバイス ログを監視し、例外がCrashlyticsTesterからトリガーされるまで待ちます。

    • iOS+ : Xcode の下部ペインでログを表示します。

    • Android : ターミナルで次のコマンドを実行してログを表示します: adb logcat

  4. デバイス ログに例外が表示されたら、アプリを再起動して、クラッシュ レポートを Firebase に送信できるようにします。

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

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


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

次のステップ

  • Google Play と統合して、Crashlytics ダッシュボードで直接 Google Play トラックによって Android アプリのクラッシュ レポートをフィルタリングできるようにします。これにより、ダッシュボードを特定のビルドに集中させることができます。