新しい公式 Firebase Crashlytics SDK を使用して、アプリで Crashlytics を設定できるようになりました。新しい Firebase Crashlytics SDK では API が改善され、他の Firebase プロダクトとの整合性が高まり、より直感的に使用できます。
このガイドでは、従来の Fabric SDK から新しい SDK にアップグレードする方法について説明します。必要に応じて、新しい API における変更点、変更理由、コードを更新する方法についても説明します。
始める前に
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 エントリが存在する場合は検索して削除します。
ステップ 1: Firebase 構成ファイルを追加する
[プロジェクトの設定] を開きます。[マイアプリ] カードで、構成ファイルが必要なアプリのバンドル ID またはパッケージ名を選択します。
アプリごとにプラットフォーム固有の Firebase 構成ファイルをダウンロードします。
- iOS+ の場合 -
GoogleService-Info.plist
- Android の場合 -
google-services.json
構成ファイルは 1 つの Unity プロジェクトにつき最大 2 つまで設定できます。
- iOS+ の場合 -
Unity プロジェクトで [Project] ウィンドウを開き、構成ファイルを
Assets
フォルダに移動します。
ステップ 2: Firebase Crashlytics SDK を追加する
Firebase Unity SDK をダウンロードし、適切な場所で解凍します。
Firebase Unity SDK はプラットフォーム固有ではありません。
開いている Unity プロジェクトで、[Assets] > [Import Package] > [Custom Package] を選択します。
解凍した SDK から Crashlytics SDK(
FirebaseCrashlytics.unitypackage
)を選択してインポートします。FirebaseCrashlytics.unitypackage
バージョン 6.15.0 以降を使用していることを確認します(そうでない場合は、アセット パッケージのバージョンを更新します)。これは、Firebase コンソールにクラッシュ レポートを表示するために必要です。- Unity 2017.x 以降: .NET 4.x フレームワークを使用できます。Unity プロジェクトで .NET 4.x を使用している場合は、
dotnet4/FirebaseCrashlytics.unitypackage
をインポートします。
その他のサポートされている Firebase プロダクトもインポートできます。
- Unity 2017.x 以降: .NET 4.x フレームワークを使用できます。Unity プロジェクトで .NET 4.x を使用している場合は、
[Import Unity Package] ウィンドウで [Import] をクリックします。
新しい C# スクリプトを作成して、シーン内の
GameObject
に追加します。最初のシーンを開き、空の
GameObject
を作成します(CrashlyticsInitializer
という名前を付けます)。新しいオブジェクトに対して、[Inspector] で [Add Component] をクリックします。
CrashlyticsInit
スクリプトを選択して、CrashlyticsInitializer
オブジェクトに追加します。
スクリプトの
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 は自動的にクラッシュ レポートをリッスンして収集します。
ステップ 3: コードを更新する
次の SDK の変更点を確認して、コードを適切に更新します。
Crashlytics は Firebase インストール ID に基づいて ID をローテーションするようになりました
Crashlytics は、Crashlytics のインストール UUID を使用してアプリのインスタンスを識別し、ユーザーのデータをデバイスに関連付けます。以前の Crashlytics では、デバイスの広告 ID が変更されたときにユーザーのインストール UUID をローテーションしていました。現在の Crashlytics では、ユーザーの Firebase インストール ID(FID)に基づいてインストール UUID をローテーションするようになっています。詳しくは、Firebase インストール ID の管理をご覧ください。
変更理由
他の Firebase SDK との整合性を取るため、FID を使用するようにしました。
Fabric.Crashlytics から Firebase.Crashlytics へ
名前空間を Fabric
から Firebase
に変更しました。
Fabric
using Fabric.Crashlytics;
Firebase
using Firebase.Crashlytics;
RecordCustomException から LogException へ
キャッチされて処理された致命的でないカスタムの例外をロギングします。
Fabric
Crashlytics.RecordCustomException(string name, string reason, StackTrace stackTrace); Crashlytics.RecordCustomException(string name, string reason, string stackTraceString);
Firebase
Crashlytics.LogException(Exception ex);
変更理由
この関数は通常、Exception
のインスタンスをロギングするために使用されます。「name」、「reason」、「stackTrace」を手動で抽出する代わりに(これらを抽出すると不要なコードが生成される)、Exception
のインスタンスを提供できるようになり、Firebase Crashlytics によって必要な情報が抽出されます。
回避策
例外から直接情報を抽出する以外にこれらのパラメータを利用していた場合、以前の動作を維持するには、引き続き独自の Exception
サブクラスを作成して、その説明にカスタムのメタデータを含めます。
SetKeyValue から SetCustomKey へ
クラッシュ レポートとともに送信する Key-Value ペアを設定します。同じキーを設定し直すと、値が更新されます。
Fabric
Crashlytics.SetKeyValue(string key, string value);
Firebase
Crashlytics.SetCustomKey(string key, string value);
変更理由
このメソッドの名前の変更は、動作をわかりやすくし、他の Firebase API との一貫性を高めるために行いました。
SetUserIdentifier から SetUserId へ
クラッシュが発生したユーザーを特定するのに役立つユーザー ID を設定します。
Fabric
Crashlytics.SetUserIdentifier(string identifier);
Firebase
Crashlytics.SetUserId(string identifier);
変更理由
このメソッドの名前の変更は、他の Firebase API との一貫性を高めるために行いました。しかも短くなったので、入力の手間も減りました。
SetUserEmail と SetUserName を削除
以前は明示的な方法で、クラッシュに関する名前やメールを設定することができましたが、今後は明示的な定義ができなくなります。
Fabric
Crashlytics.SetUserEmail(string email); Crashlytics.SetUserName(string name);
変更理由
Google は顧客データの保護に努めており、その取り組みの一環として顧客データを保護するデベロッパー ツール向けの API を開発しています。これらのユーザー固有の API を削除したのは、クラッシュの影響を受けたユーザーを識別する際に、生成済みの個人を特定しないメソッドの使用を促すことを目的としています。
回避策
クラッシュが発生したユーザーを指定するには、SetUserId
の使用をおすすめします。この方法で解決できない場合は、SetCustomKey
を使用して同じ機能を実現できます。
Crash と ThrowNonFatal を削除
以前、Crashlytics にはテストのために例外をスローする 2 つのユーティリティ メソッドが用意されていましたが、Firebase Crashlytics にはこれらのメソッドが含まれません。
Fabric
Crashlytics.Crash(); Crashlytics.ThrowNonFatal();
変更理由
Crashlytics for Unity はさまざまな環境で動作し、多様なクラッシュが発生する可能性があります。これらのメソッドは、発生したクラッシュが C# で発生したのか、基盤となるプラットフォーム固有のネイティブ SDK で発生したのかを明示しませんでした。
回避策
- Firebase コンソールの Crashlytics ダッシュボードにクラッシュ レポートを送信するテスト クラッシュを強制的に発生させることで、実装をテストします。
ステップ 4: プロジェクトをビルドする
Unity の [Build Settings] ダイアログを使用してプロジェクトをエクスポートします。
エクスポートが完了したら、エクスポートしたプロジェクトと以下のエクスポート構成の例を比較して、プロジェクトが正しくエクスポートされていることを確認します。
iOS+
Android
プロジェクトを比較した結果、欠落しているファイルがある場合は、Unity エディタを開いて、Google Play 開発者サービス リゾルバを実行します(以下の手順を参照してください)。
エクスポート後にファイルが欠落している場合はリゾルバを実行する(必要に応じて)
External Dependency Manager for Unity(EDM4U)を使用すると、Unity プロジェクトに Apple プラットフォームと Android プラットフォーム用の適切なランタイム依存関係を格納できます。リゾルバの詳細については、Unity Jar Resolver の README をご覧ください。
次のステップ
Firebase コンソールの Crashlytics ダッシュボードにクラッシュ レポートを送信するテスト クラッシュを強制的に発生させて、実装をテストする。
クラッシュ レポートの設定をカスタマイズするために、オプトイン レポート、ログ、キー、非致命的なエラーの追跡を追加する。
アプリに Google アナリティクスを追加する。Google アナリティクスの機能と Firebase Crashlytics を組み合わせると、クラッシュの影響を受けていないユーザーの統計情報が Firebase コンソールに表示されます。