コンソールへ移動

Unity アプリを Fabric Crashlytics から Firebase Crashlytics に移行する

このクイックスタートでは、Firebase コンソールですべてのクラッシュ レポートを表示できるよう、既存の Fabric Crashlytics Unity アプリを Firebase Crashlytics に移行する方法について説明します。

準備

次のガイドでは、Fabric で Unity アプリが機能していることが前提となります。Fabric 内に既存の Unity アプリがない場合は、Crashlytics の新規ユーザーを対象とする、使ってみるの手順に従ってください。

  1. Fabric にログインして、移行フローに移動します。

  2. [Signed into Google as] フィールドに、ご使用の Firebase プロジェクトに関連付けられている Google アカウントが入力されていることを確認します。該当するアカウントでない場合は、[Switch accounts] をクリックして正しいアカウントを選択します。

  3. [Get Started] をクリックしてから、[Start Linking] をクリックします。

  4. 左側の該当する Fabric アプリを右側の該当する Firebase プロジェクトにドラッグします。

    新しい Firebase プロジェクトを作成することもできます。

  5. [Link 1 app to Firebase] をクリックします。

ステップ 2: Fabric を削除する

Fabric はシーンに GameObject を追加して、ゲーム内の Crashlytics や SDK 自体の追加ディレクトリを初期化します。

Fabric Crashlytics プラグインと Firebase Crashlytics プラグインの競合を回避するには、Unity プロジェクトから次の Fabric フォルダとファイルを削除します。

  • [Assets] に含まれている次のファイルを削除します。

    Assets/
       Editor Default Resources/
           FabricSettings.asset     <- DELETE
       Fabric/                      <- DELETE
       Plugins/
           Android/
               answers/             <- DELETE
               beta/                <- DELETE
               crashlytics/         <- DELETE
               crashlytics-wrapper/ <- DELETE
               fabric/              <- DELETE
               fabric-init/         <- DELETE
           iOS/
               Fabric/              <- DELETE
    
  • [Hierarchy Window] で、次の GameObject を削除します。

    SampleScene
        Main Camera
        Directional Light
        Canvas
        EventSystem
        FabricInit                  <- DELETE
        CrashlyticsInit             <- DELETE
    
  • [Assets] > [Plugins] > [Android] > [AndroidManifest.xml] で Fabric に関するすべてのエントリを削除します。

    たとえば、既存のキーを削除する場合: android:name="io.fabric.unity.android.FabricApplication"

    他の Fabric エントリが存在する場合は検索して削除します。

ステップ 3: Firebase 構成ファイルを追加する

  1. Firebase コンソールに移動します。

  2. 左上の [Project Overview] の横にある settings をクリックして、[プロジェクトの設定] を選択します。

  3. アプリを新しくリンクした場合は、リンクしたアプリごとに Firebase のプラットフォーム固有の構成ファイルをダウンロードします。構成ファイルは 1 つの Unity プロジェクトにつき最大 2 つまで設定できます。

    • iOS の場合 - GoogleService-Info.plist
    • Android の場合 - google-services.json
  4. Unity プロジェクトで [プロジェクト] ウィンドウを開き、構成ファイルを Assets フォルダに移動します。

ステップ 4: Firebase Crashlytics SDK を追加する

  1. Firebase Unity SDK をダウンロードし、適切な場所で解凍します。

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

  2. 開いている Unity プロジェクトで、[Assets] > [Import Package] > [Custom Package] を選択します。

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

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

  4. [Import Unity Package] ウィンドウで [Import] をクリックします。

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

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

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

    2. 新しいオブジェクトに対して、[Inspector] で [Add Component] をクリックします。

    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()
          // ...
      }

    SDK を追加して初期化したので、Crashlytics は自動的にクラッシュ レポートをリッスンして収集します。

ステップ 6: Fabric API 呼び出しを置き換える

API に対するいくつかの変更点を考慮に入れる必要があります。詳しくは、Unity API の変更に関するページをご覧ください。

ステップ 7: Fabric API キーを追加する

アプリはすでに Fabric とリンクした状態になっているため、Firebase にアプリの Fabric API キーを提供する必要があります。キーを提供すると、クラッシュ レポートが Firebase Crashlytics にシームレスに移動し、Firebase Crashlytics ダッシュボードにすべての履歴データを表示できるようになります。

  1. Unity プロジェクトで [Window] > [Firebase] > [Crashlytics] を選択して、Firebase Crashlytics を開きます。

  2. [Fabric API Key] に Fabric API キーを入力します。

  3. [保存] をクリックします。

ステップ 8: プロジェクトをビルドする

プロジェクトを iOS または Android にエクスポートした後、プロジェクトが正しくエクスポートされていることを確認します。

プロジェクトを以下のサンプル エクスポート構成と比較します。その結果、欠落しているファイルがあるようであれば、Unity エディタを開いて、Google Play 開発者サービス リゾルバを実行します。

iOS

Android

リゾルバを実行する(省略可)

Google Play 開発者サービス リゾルバは、アプリを iOS または Android にエクスポートするのに適切な依存関係が Unity プロジェクトに含まれていることを確認します。

リゾルバの詳細については、Unity Jar Resolver の README をご覧ください。

iOS

iOS リゾルバは自動的に実行され、Cocoapods を使用して iOS の依存関係をエクスポート済みの Pods ディレクトリに格納します。

  • Cocoapods をマシンにダウンロードするには:

    • [Assets] > [Play Services Resolver] > [iOS Resolver] > [Install Cocoapods] に移動します。
  • ポッドファイルの生成を有効または無効にするには(オプション):

    • [Assets] > [Play Services Resolver] > [iOS Resolver] > [Settings] に移動します。

    Android

    Android リゾルバは自動的に実行され、gradle を使用して Android の依存関係を Assets/Plugins/Android に格納します。

  • リゾルバを手動で実行するには:

    • [Assets] > [Play Services Resolver] > [Android Resolver] > [Resolve] に移動します。
  • 自動解決を有効または無効にするには(デフォルトでは有効):

    • [Assets] > [Play Services Resolver] > [Android Resolver] > [Settings] に移動します。

次のステップ