コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Firebase Crashlytics の基本的な使い方

検証環境

  • Unity 2022.1.23f1
  • Android 13

前提条件

Firebase Console にプロジェクトを作成済みで
「google-services.json」を Assets フォルダに導入済みだと想定しています

Android に Switch Platform

Android に Switch Platform しておきます

パッケージの入手

上記のページを開いて

  • .tgz
  • com.google.external-dependency-manager
  • com.google.firebase.app

上記の 3 つのリンクをクリックして

  • com.google.firebase.crashlytics-10.2.0.tgz
  • com.google.external-dependency-manager-1.2.175.tgz
  • com.google.firebase.app-10.2.0.tgz

これらの .tgz を入手して

Unity プロジェクトの「Packages」フォルダに追加して
同フォルダ内の「manifest.json」を開きます

{
  "dependencies": {
    "com.google.external-dependency-manager": "file:./com.google.external-dependency-manager-1.2.175.tgz",
    "com.google.firebase.app": "file:./com.google.firebase.app-10.2.0.tgz",
    "com.google.firebase.crashlytics": "file:./com.google.firebase.crashlytics-10.2.0.tgz",
    
    ...
  }
}

dependencies 内に上記の 3 行を追加して保存します

保存したら Unity を開いてインポート処理が終わるのを待ちます

インポートが完了して上記のダイアログが表示されたら「Disable」を押して

Unity メニューの
「Assets > External Dependency Manager > Android Resolver > Force Resolve」を押します

Resolving Android Dependencies が開始するので完了するまで待ちます

もし「Resolution Failed!(失敗)」というダイアログが表示されて

Console にエラーが表示された場合は

上記のページで紹介されている手順を踏んでから

Unity メニューの
「Assets > External Dependency Manager > Android Resolver > Force Resolve」を押して

Resolving Android Dependencies が完了するまで待ちます

「Resolution Succeeded(成功)」ウィンドウが表示されて

「Assets/Plugins/Android」フォルダ内に
上記のようにファイルが追加されていれば成功です

動作確認

using System;
using Firebase;
using UnityEngine;

public class Example : MonoBehaviour
{
    private async void Start()
    {
        var status = await FirebaseApp.CheckDependenciesAsync();

        if ( status != DependencyStatus.Available ) return;

        _ = FirebaseApp.DefaultInstance;

        throw new Exception( "ピカチュウ" ); // 例外を投げる
    }
}

上記の Example.cs を Unity プロジェクトに追加して

シーンのゲームオブジェクトにアタッチした状態で Android ビルドして、
アプリが起動して例外を投げる処理に到達したらアプリを再起動します*1

Firebase Console を開いて左メニューから
「リリースとモニタリング > Crashlytics」を選択します

すると、Example.cs で発生した例外が表示されていることが確認できます

例外を選択すると例外が発生したデバイスの情報やスタックトレースが確認できます

情報の付与

using System;
using Firebase;
using Firebase.Crashlytics;
using UnityEngine;

public class Example : MonoBehaviour
{
    private async void Start()
    {
        var status = await FirebaseApp.CheckDependenciesAsync();

        if ( status != DependencyStatus.Available ) return;

        _ = FirebaseApp.DefaultInstance;

        Crashlytics.SetUserId( "1234" );                 // ★
        Crashlytics.SetCustomKey( "player_id", "abcd" ); // ★

        throw new Exception( "ピカチュウ" ); // 例外を投げる
    }
}

Crashlytics.SetUserId でユーザー ID を付与できます
Crashlytics.SetCustomKey で独自の情報を付与できます

ユーザー ID を付与すると Firebase Console で検索できるようになります

付与した独自の情報は「鍵」タブで確認できるようになります

IL2CPP ビルドする場合

IL2CPP ビルドする場合は上記ページのステップ 3 と 4 の手順を踏むことで
より詳細な情報が Firebase Console 上で見られるようになるそうです

公式ドキュメント

関連記事

*1:Firebase Crashlytics ではアプリの起動時に例外の情報がサーバーに送信されます