Zacznij korzystać z Firebase Crashlytics

W tym krótkim wprowadzeniu opisano, jak skonfigurować Firebase Crashlytics w swojej aplikacji za pomocą pakietu Firebase Crashlytics SDK, aby uzyskać szczegółowe raporty o awariach w konsoli Firebase.

Konfiguracja Crashlytics wymaga wykonania zadań zarówno w konsoli Firebase, jak i IDE (takich jak dodanie pliku konfiguracyjnego Firebase i pakietu Crashlytics SDK). Aby zakończyć konfigurację, musisz wymusić awarię testową, aby wysłać pierwszy raport o awarii do Firebase.

Zanim zaczniesz

  1. Jeśli jeszcze tego nie zrobiłeś, dodaj Firebase do swojego projektu Unity. Jeśli nie masz projektu Unity, możesz pobrać przykładową aplikację .

  2. Zalecane : aby korzystać z funkcji, takich jak użytkownicy bez awarii, dzienniki nawigacyjne i alerty dotyczące szybkości, musisz włączyć Google Analytics w swoim projekcie Firebase.

    • Jeśli w istniejącym projekcie Firebase nie włączono Google Analytics, możesz włączyć Google Analytics na karcie Integracje w > Ustawienia projektu w konsoli Firebase.

    • Jeśli tworzysz nowy projekt Firebase, włącz Google Analytics podczas procesu tworzenia projektu.

Krok 1 : dodaj pakiet SDK Firebase Crashlytics do swojej aplikacji

Pamiętaj, że po zarejestrowaniu projektu Unity w projekcie Firebase możliwe, że pobrałeś już pakiet Firebase Unity SDK i dodałeś pakiet Crashlytics.

  1. Pobierz pakiet Firebase Unity SDK , a następnie rozpakuj go w dogodnym miejscu.

    Pakiet Firebase Unity SDK nie jest specyficzny dla platformy.

  2. W otwartym projekcie Unity przejdź do Zasoby > Importuj pakiet > Pakiet niestandardowy .

  3. Z rozpakowanego pakietu SDK wybierz, aby zaimportować pakiet Crashlytics SDK ( FirebaseCrashlytics.unitypackage ).

    Możesz też zaimportować dowolny inny obsługiwany produkt Firebase .

  4. W oknie Importuj pakiet Unity kliknij opcję Importuj .

Krok 2 : Zainicjuj Crashlytics

  1. Utwórz nowy skrypt C#, a następnie dodaj go do GameObject w scenie.

    1. Otwórz swoją pierwszą scenę, a następnie utwórz pusty GameObject o nazwie CrashlyticsInitializer .

    2. Kliknij Dodaj składnik w Inspektorze dla nowego obiektu.

    3. Wybierz skrypt CrashlyticsInit , aby dodać go do obiektu CrashlyticsInitializer .

  2. Zainicjuj Crashlytics w metodzie Start skryptu:

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

Krok 3 : (tylko Android) Przygotuj się do przesyłania symboli

Czynności opisane w tej sekcji są wymagane tylko w przypadku aplikacji na Androida korzystających z IL2CPP.

  • W przypadku aplikacji na Androida korzystających z zaplecza skryptów Unity Mono te kroki nie są potrzebne.

  • W przypadku aplikacji platformy Apple te kroki nie są potrzebne, ponieważ wtyczka Firebase Unity Editor automatycznie konfiguruje projekt Xcode do przesyłania symboli.

Unity SDK 8.6.1+ firmy Crashlytics automatycznie zawiera raportowanie awarii NDK, co pozwala Crashlytics na automatyczne zgłaszanie awarii Unity IL2CPP na Androida. Aby jednak zobaczyć symboliczne ślady stosu dla awarii bibliotek natywnych w panelu Crashlytics, musisz przesłać informacje o symbolu w czasie kompilacji za pomocą interfejsu wiersza polecenia Firebase.

Wykonaj następujące kroki, aby skonfigurować przesyłanie symboli:

  1. Postępuj zgodnie z instrukcjami, aby zainstalować Firebase CLI .

    Jeśli już zainstalowałeś CLI, zaktualizuj do najnowszej wersji .

  2. (tylko w przypadku aplikacji korzystających z interfejsu API systemu Android na poziomie 30+) Zaktualizuj szablon AndroidManifest.xml swojej aplikacji, aby wyłączyć tagowanie wskaźnika:

    1. Zaznacz pole Ustawienia odtwarzacza Android > Ustawienia publikowania > Kompilacja > Niestandardowy główny manifest .

    2. Otwórz szablon manifestu znajdujący się w Assets/Plugins/Android/AndroidManifest.xml .

    3. Dodaj następujący atrybut do tagu aplikacji: <application android:allowNativeHeapPointerTagging="false" ... />

Krok 4 : Zbuduj swój projekt i prześlij symbole

iOS+ (platforma Apple)

  1. W oknie dialogowym Ustawienia kompilacji wyeksportuj projekt do obszaru roboczego Xcode.

  2. Zbuduj swoją aplikację.

    W przypadku platform Apple wtyczka Firebase Unity Editor automatycznie konfiguruje projekt Xcode w celu wygenerowania i przesłania pliku symboli zgodnego z Crashlytics na serwery Firebase dla każdej kompilacji.

Android

  1. W oknie dialogowym Ustawienia budowania wykonaj jedną z następujących czynności:

    • Eksportuj do projektu Android Studio, aby zbudować swój projekt; lub

    • Stwórz swój pakiet APK bezpośrednio z edytora Unity.
      Przed budowaniem upewnij się, że pole wyboru Utwórz symbole.zip jest zaznaczone w oknie dialogowym Ustawienia budowania .

  2. Po zakończeniu kompilacji wygeneruj plik symboli zgodny z Crashlytics i prześlij go na serwery Firebase, uruchamiając następujące polecenie Firebase CLI:

    firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
    • FIREBASE_APP_ID : identyfikator aplikacji Firebase na Androida (nie nazwa pakietu)
      Przykładowy identyfikator aplikacji Firebase na Androida: 1:567383003300:android:17104a2ced0c9b9b

    • PATH/TO/SYMBOLS : Ścieżka do pliku symboli wygenerowanego przez CLI

      • Eksportowane do projektu Android Studio — PATH/TO/SYMBOLS to unityLibrary/symbols , który jest tworzony w katalogu głównym wyeksportowanego projektu po zbudowaniu aplikacji za pomocą Gradle lub Android Studio.

      • Zbuduj pakiet APK bezpośrednio z poziomu Unity — PATH/TO/SYMBOLS to ścieżka spakowanego pliku symboli wygenerowanego w katalogu głównym projektu po zakończeniu kompilacji (na przykład: myproject/myapp-1.0-v100.symbols.zip ).

    Wyświetl zaawansowane opcje korzystania z polecenia Firebase CLI do generowania i przesyłania plików symboli

    Flaga Opis
    --generator=csym

    Używa starszego generatora plików symboli cSYM zamiast domyślnego generatora Breakpad

    Nie zaleca się stosowania. Zalecamy użycie domyślnego generatora plików symboli Breakpad.

    --generator=breakpad

    Używa generatora plików symboli Breakpad

    Zauważ, że domyślnym generatorem plików symboli jest Breakpad. Użyj tej flagi tylko wtedy, gdy dodałeś symbolGenerator { csym() } w konfiguracji kompilacji i chcesz go zastąpić, aby zamiast tego używać Breakpad.

    --dry-run

    Generuje pliki symboli, ale ich nie przesyła

    Ta flaga jest przydatna, jeśli chcesz sprawdzić zawartość wysyłanych plików.

    --debug Zapewnia dodatkowe informacje dotyczące debugowania

Krok 5 : Wymuś awarię testową, aby zakończyć konfigurację

Aby zakończyć konfigurowanie Crashlytics i wyświetlić początkowe dane w panelu Crashlytics konsoli Firebase, musisz wymusić awarię testową.

  1. Znajdź istniejący GameObject , a następnie dodaj do niego następujący skrypt. Ten skrypt spowoduje awarię testową kilka sekund po uruchomieniu aplikacji.

    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. Stwórz swoją aplikację i prześlij informacje o symbolach po zakończeniu kompilacji.

    • iOS+ : wtyczka Firebase Unity Editor automatycznie konfiguruje projekt Xcode w celu przesłania pliku symboli.

    • Android : w przypadku aplikacji na Androida korzystających z protokołu IL2CPP uruchom polecenie crashlytics:symbols:upload , aby przesłać plik symboli.

  3. Uruchom swoją aplikację. Po uruchomieniu aplikacji obserwuj dziennik urządzenia i poczekaj na wyzwolenie wyjątku przez CrashlyticsTester .

    • iOS+ : wyświetlaj dzienniki w dolnym okienku Xcode.

    • Android : wyświetl logi, uruchamiając w terminalu następujące polecenie: adb logcat .

  4. Gdy zobaczysz wyjątek w dzienniku urządzenia, uruchom ponownie aplikację, aby mogła wysłać raport o awarii do Firebase.

  5. Przejdź do panelu Crashlytics w konsoli Firebase, aby zobaczyć awarię testu.

    Jeśli po odświeżeniu konsoli nadal nie widzisz awarii testowej po pięciu minutach, włącz rejestrowanie debugowania , aby sprawdzić, czy aplikacja wysyła raporty o awariach.


I to wszystko! Crashlytics monitoruje teraz Twoją aplikację pod kątem awarii. Odwiedź panel Crashlytics , aby wyświetlić i zbadać wszystkie swoje raporty i statystyki.

Następne kroki

  • Zintegruj się z Google Play , aby móc filtrować raporty o awariach aplikacji na Androida według ścieżki Google Play bezpośrednio w panelu Crashlytics. Dzięki temu możesz lepiej skoncentrować swój pulpit nawigacyjny na konkretnych kompilacjach.

,

W tym krótkim wprowadzeniu opisano, jak skonfigurować Firebase Crashlytics w swojej aplikacji za pomocą pakietu Firebase Crashlytics SDK, aby uzyskać szczegółowe raporty o awariach w konsoli Firebase.

Konfiguracja Crashlytics wymaga wykonania zadań zarówno w konsoli Firebase, jak i IDE (takich jak dodanie pliku konfiguracyjnego Firebase i pakietu Crashlytics SDK). Aby zakończyć konfigurację, musisz wymusić awarię testową, aby wysłać pierwszy raport o awarii do Firebase.

Zanim zaczniesz

  1. Jeśli jeszcze tego nie zrobiłeś, dodaj Firebase do swojego projektu Unity. Jeśli nie masz projektu Unity, możesz pobrać przykładową aplikację .

  2. Zalecane : aby korzystać z funkcji, takich jak użytkownicy bez awarii, dzienniki nawigacyjne i alerty dotyczące szybkości, musisz włączyć Google Analytics w swoim projekcie Firebase.

    • Jeśli w istniejącym projekcie Firebase nie włączono Google Analytics, możesz włączyć Google Analytics na karcie Integracje w > Ustawienia projektu w konsoli Firebase.

    • Jeśli tworzysz nowy projekt Firebase, włącz Google Analytics podczas procesu tworzenia projektu.

Krok 1 : dodaj pakiet SDK Firebase Crashlytics do swojej aplikacji

Pamiętaj, że po zarejestrowaniu projektu Unity w projekcie Firebase możliwe, że pobrałeś już pakiet Firebase Unity SDK i dodałeś pakiet Crashlytics.

  1. Pobierz pakiet Firebase Unity SDK , a następnie rozpakuj go w dogodnym miejscu.

    Pakiet Firebase Unity SDK nie jest specyficzny dla platformy.

  2. W otwartym projekcie Unity przejdź do Zasoby > Importuj pakiet > Pakiet niestandardowy .

  3. Z rozpakowanego pakietu SDK wybierz, aby zaimportować pakiet Crashlytics SDK ( FirebaseCrashlytics.unitypackage ).

    Możesz też zaimportować dowolny inny obsługiwany produkt Firebase .

  4. W oknie Importuj pakiet Unity kliknij opcję Importuj .

Step 2 : Initialize Crashlytics

  1. Create a new C# script, then add it to a GameObject in the scene.

    1. Open your first scene, then create an empty GameObject named CrashlyticsInitializer .

    2. Click Add Component in the Inspector for the new object.

    3. Select your CrashlyticsInit script to add it to the CrashlyticsInitializer object.

  2. Initialize Crashlytics in the script's Start method:

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

Step 3 : (Android only) Get set up for symbol uploading

The steps in this section are only required for Android apps that use IL2CPP.

  • For Android apps that use Unity's Mono scripting backend, these steps aren't needed.

  • For Apple platform apps, these steps aren't needed because the Firebase Unity Editor plugin automatically configures your Xcode project to upload symbols.

Crashlytics's Unity SDK 8.6.1+ automatically includes NDK crash reporting, which allows Crashlytics to automatically report Unity IL2CPP crashes on Android. However, to see symbolicated stack traces for native library crashes in the Crashlytics dashboard, you must upload symbol information at build time using the Firebase CLI.

Complete the following steps to get set up for symbol uploading:

  1. Follow the instructions to install the Firebase CLI .

    If you've already installed the CLI, make sure to update to its latest version .

  2. (only for apps using Android API level 30+) Update your app's AndroidManifest.xml template to disable Pointer Tagging:

    1. Check the box for Android Player Settings > Publishing Settings > Build > Custom Main Manifest .

    2. Open the manifest template located at Assets/Plugins/Android/AndroidManifest.xml .

    3. Add the following attribute to the application tag: <application android:allowNativeHeapPointerTagging="false" ... />

Step 4 : Build your project and upload symbols

iOS+ (Apple platform)

  1. From the Build Settings dialog, export your project to an Xcode workspace.

  2. Build your app.

    For Apple platforms, the Firebase Unity Editor plugin automatically configures your Xcode project to generate and upload a Crashlytics-compatible symbol file to Firebase servers for each build.

Android

  1. From the Build Settings dialog, do one of the following:

    • Export to an Android Studio project to build your project; or

    • Build your APK directly from the Unity Editor.
      Before building, make sure the checkbox for Create symbols.zip is checked in the Build Settings dialog.

  2. Once your build has finished, generate a Crashlytics-compatible symbol file and upload it to Firebase servers by running the following Firebase CLI command:

    firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
    • FIREBASE_APP_ID : Your Firebase Android App ID (not your package name)
      Example Firebase Android App ID: 1:567383003300:android:17104a2ced0c9b9b

    • PATH/TO/SYMBOLS : The path to the symbol file generated by the CLI

      • Exported to an Android Studio project — PATH/TO/SYMBOLS is the unityLibrary/symbols directory, which is created in the exported project root after you build the app via Gradle or Android Studio.

      • Built the APK directly from within Unity — PATH/TO/SYMBOLS is the path of the zipped symbol file generated in the project root directory when your build finished (for example: myproject/myapp-1.0-v100.symbols.zip ).

    View advanced options for using the Firebase CLI command for symbol file generation and upload

    Flag Description
    --generator=csym

    Uses the legacy cSYM symbol file generator instead of the default Breakpad generator

    Not recommended for use. We recommend using the default Breakpad symbol file generator.

    --generator=breakpad

    Uses the Breakpad symbol file generator

    Note that the default for symbol file generation is Breakpad. Only use this flag if you've added symbolGenerator { csym() } in your build configuration and you want to override it to use Breakpad instead.

    --dry-run

    Generates the symbol files but does not upload them

    This flag is useful if you want to inspect the content of the files that are sent.

    --debug Provides additional debugging information

Step 5 : Force a test crash to finish setup

To finish setting up Crashlytics and see initial data in the Crashlytics dashboard of the Firebase console, you need to force a test crash.

  1. Find an existing GameObject , then add to it the following script. This script will cause a test crash a few seconds after you run your app.

    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. Build your app and upload symbol information after your build finishes.

    • iOS+ : The Firebase Unity Editor plugin automatically configures your Xcode project to upload your symbol file.

    • Android : For your Android apps that use IL2CPP, run the Firebase CLI crashlytics:symbols:upload command to upload your symbol file.

  3. Run your app. Once your app is running, watch the device log and wait for the exception to trigger from the CrashlyticsTester .

    • iOS+ : View logs in the bottom pane of Xcode.

    • Android : View logs by running the following command in the terminal: adb logcat .

  4. When you see the exception in your device log, restart your app so that it can send the crash report to Firebase.

  5. Go to the Crashlytics dashboard of the Firebase console to see your test crash.

    If you've refreshed the console and you're still not seeing the test crash after five minutes, enable debug logging to see if your app is sending crash reports.


And that's it! Crashlytics is now monitoring your app for crashes. Visit the Crashlytics dashboard to view and investigate all your reports and statistics.

Next steps

  • Integrate with Google Play so that you can filter your Android app's crash reports by Google Play track directly in the Crashlytics dashboard. This allows you to better focus your dashboard on specific builds.