Inizia con Firebase Crashlytics

Questa guida di avvio rapido descrive come configurare Firebase Crashlytics nella tua app con l'SDK Firebase Crashlytics in modo da poter ottenere report completi sugli arresti anomali nella console Firebase.

La configurazione di Crashlytics richiede attività sia nella console Firebase che nel tuo IDE (come l'aggiunta di un file di configurazione Firebase e dell'SDK di Crashlytics). Per completare la configurazione, dovrai forzare un arresto anomalo di prova per inviare il primo rapporto sull'arresto anomalo a Firebase.

Prima di iniziare

  1. Se non l'hai già fatto, aggiungi Firebase al tuo progetto Unity. Se non disponi di un progetto Unity, puoi scaricare un'app di esempio .

  2. Consigliato : per ottenere automaticamente i log breadcrumb per comprendere le azioni degli utenti che portano a un arresto anomalo, un evento non fatale o ANR, devi abilitare Google Analytics nel tuo progetto Firebase.

    • Se il tuo progetto Firebase esistente non ha Google Analytics abilitato, puoi abilitare Google Analytics dalla scheda Integrazioni del tuo > Impostazioni progetto nella console Firebase.

    • Se stai creando un nuovo progetto Firebase, abilita Google Analytics durante il flusso di lavoro di creazione del progetto.

Passaggio 1 : aggiungi l'SDK Crashlytics alla tua app

Tieni presente che quando hai registrato il tuo progetto Unity con il tuo progetto Firebase, potresti aver già scaricato l'SDK Firebase Unity e aggiunto i pacchetti descritti nei passaggi seguenti.

  1. Scarica l' SDK Firebase Unity , quindi decomprimi l'SDK in un posto comodo. L'SDK Firebase Unity non è specifico della piattaforma.

  2. Nel tuo progetto Unity aperto, vai a Assets > Import Package > Custom Package .

  3. Dall'SDK decompresso, seleziona per importare l'SDK di Crashlytics ( FirebaseCrashlytics.unitypackage ).

    Per sfruttare i log breadcrumb aggiungi anche l'SDK Firebase per Google Analytics alla tua app ( FirebaseAnalytics.unitypackage ). Assicurati che Google Analytics sia abilitato nel tuo progetto Firebase.

  4. Nella finestra Importa pacchetto Unity , fare clic su Importa .

Passaggio 2 : inizializza Crashlytics

  1. Crea un nuovo script C#, quindi aggiungilo a GameObject nella scena.

    1. Apri la tua prima scena, quindi crea un GameObject vuoto denominato CrashlyticsInitializer .

    2. Fai clic su Aggiungi componente nell'Inspector per il nuovo oggetto.

    3. Seleziona lo script CrashlyticsInit per aggiungerlo all'oggetto CrashlyticsInitializer .

  2. Inizializza Crashlytics nel metodo Start dello script:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    // Import Firebase and Crashlytics
    using Firebase;
    using Firebase.Crashlytics;
    
    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;
    
                    // When this property is set to true, Crashlytics will report all
                    // uncaught exceptions as fatal events. This is the recommended behavior.
                    Crashlytics.ReportUncaughtExceptionsAsFatal = true;
    
                    // 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()
        // ...
    }

Passaggio 3 : (solo Android) Configura il caricamento dei simboli

Questo passaggio è richiesto solo per le app Android che utilizzano IL2CPP.

  • Per le app Android che utilizzano il backend di scripting Mono di Unity, questi passaggi non sono necessari.

  • Per le app della piattaforma Apple, questi passaggi non sono necessari perché il plug-in Firebase Unity Editor configura automaticamente il tuo progetto Xcode per caricare i simboli.

Unity SDK 8.6.1+ di Crashlytics include automaticamente la segnalazione degli arresti anomali di NDK, che consente a Crashlytics di segnalare automaticamente gli arresti anomali di Unity IL2CPP su Android. Tuttavia, per visualizzare le analisi dello stack simboliche per gli arresti anomali della libreria nativa nella dashboard di Crashlytics, devi caricare le informazioni sui simboli in fase di creazione utilizzando la CLI di Firebase.

Per configurare il caricamento dei simboli, segui le istruzioni per installare la CLI Firebase .

Se hai già installato la CLI, assicurati di aggiornarla alla versione più recente .

Passaggio 4 : crea il tuo progetto e carica i simboli

iOS+ (piattaforma Apple)

  1. Dalla finestra di dialogo Impostazioni di creazione , esporta il tuo progetto in un'area di lavoro Xcode.

  2. Crea la tua app.

    Per le piattaforme Apple, il plug-in Firebase Unity Editor configura automaticamente il tuo progetto Xcode per generare e caricare un file di simboli compatibile con Crashlytics sui server Firebase per ogni build.

Androide

  1. Dalla finestra di dialogo Impostazioni di creazione , esegui una delle seguenti operazioni:

    • Esporta in un progetto Android Studio per creare il tuo progetto; O

    • Crea il tuo APK direttamente dall'editor Unity.
      Prima di creare, assicurati che la casella di controllo Crea simboli.zip sia selezionata nella finestra di dialogo Impostazioni di creazione .

  2. Una volta terminata la creazione, genera un file di simboli compatibile con Crashlytics e caricalo sui server Firebase eseguendo il seguente comando CLI di Firebase:

    firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
    • FIREBASE_APP_ID : ID dell'app Android Firebase (non il nome del pacchetto)
      Esempio di ID app Android Firebase: 1:567383003300:android:17104a2ced0c9b9b

    • PATH/TO/SYMBOLS : il percorso del file di simboli generato dalla CLI

      • Esportato in un progetto Android Studio: PATH/TO/SYMBOLS è la directory unityLibrary/symbols , creata nella root del progetto esportato dopo aver creato l'app tramite Gradle o Android Studio.

      • Crea l'APK direttamente da Unity: PATH/TO/SYMBOLS è il percorso del file di simboli compresso generato nella directory root del progetto al termine della compilazione (ad esempio: myproject/myapp-1.0-v100.symbols.zip ).

    Visualizza le opzioni avanzate per l'utilizzo del comando CLI di Firebase per la generazione e il caricamento di file di simboli

    Bandiera Descrizione
    --generator=csym

    Utilizza il generatore di file di simboli cSYM legacy invece del generatore Breakpad predefinito

    Non raccomandato per l'uso. Si consiglia di utilizzare il generatore di file di simboli Breakpad predefinito.

    --generator=breakpad

    Utilizza il generatore di file di simboli Breakpad

    Tieni presente che l'impostazione predefinita per la generazione del file di simboli è Breakpad. Utilizza questo flag solo se lo hai aggiunto symbolGenerator { csym() } nella configurazione della build e desideri sovrascriverlo per utilizzare invece Breakpad.

    --dry-run

    Genera i file dei simboli ma non li carica

    Questo flag è utile se vuoi controllare il contenuto dei file che vengono inviati.

    --debug Fornisce ulteriori informazioni di debug

Passaggio 5 : forza un arresto anomalo del test per completare la configurazione

Per completare la configurazione di Crashlytics e visualizzare i dati iniziali nella dashboard di Crashlytics della console Firebase, devi forzare un arresto anomalo del test.

  1. Trova un GameObject esistente, quindi aggiungilo il seguente script. Questo script causerà un arresto anomalo del test pochi secondi dopo l'esecuzione dell'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 reports 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. Crea la tua app e carica le informazioni sui simboli al termine della creazione.

    • iOS+ : il plugin Firebase Unity Editor configura automaticamente il tuo progetto Xcode per caricare il tuo file di simboli.

    • Android : per le tue app Android che utilizzano IL2CPP, esegui il comando crashlytics:symbols:upload della CLI Firebase per caricare il file di simboli.

  3. Esegui la tua app. Una volta che l'app è in esecuzione, osserva il registro del dispositivo e attendi l'attivazione dell'eccezione da CrashlyticsTester .

    • iOS+ : visualizza i log nel riquadro inferiore di Xcode.

    • Android : visualizza i log eseguendo il seguente comando nel terminale: adb logcat .

  4. Vai alla dashboard Crashlytics della console Firebase per vedere l'arresto anomalo del test.

    Se hai aggiornato la console e non vedi ancora l'arresto anomalo del test dopo cinque minuti, abilita la registrazione del debug per vedere se la tua app sta inviando rapporti sugli arresti anomali.


E questo è tutto! Crashlytics ora monitora gli arresti anomali della tua app. Visita la dashboard di Crashlytics per visualizzare ed esaminare tutti i report e le statistiche.

Prossimi passi

  • (Consigliato) Per le app Android che utilizzano IL2CPP, ottieni assistenza per il debug degli arresti anomali causati da errori della memoria nativa raccogliendo report GWP-ASan . Questi errori relativi alla memoria possono essere associati al danneggiamento della memoria all'interno dell'app, che è la causa principale delle vulnerabilità della sicurezza dell'app. Per sfruttare questa funzionalità di debug, assicurati che la tua app utilizzi la versione più recente dell'SDK Crashlytics per Unity (v10.7.0+) e che GWP-ASan sia abilitato esplicitamente (è necessario modificare il manifest dell'app Android ).
  • Integra con Google Play in modo da poter filtrare i rapporti sugli arresti anomali della tua app Android in base al monitoraggio di Google Play direttamente nella dashboard di Crashlytics. Ciò ti consente di focalizzare meglio la tua dashboard su build specifiche.