Inizia a utilizzare Firebase Crashlytics


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

La configurazione di Crashlytics richiede attività sia nella console Firebase sia nel IDE (ad esempio l'aggiunta di un file di configurazione di Firebase e dell'SDK Crashlytics). Per completare la configurazione, devi forzare un arresto anomalo di prova per inviare il tuo primo report sugli arresti anomali a Firebase.

Prima di iniziare

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

  2. Consigliato: per ottenere automaticamente i log dei breadcrumb per comprendere le azioni dell'utente che hanno portato a un arresto anomalo, a un evento non irreversibile o ANR, devi attivare Google Analytics nel tuo progetto Firebase.

    • Se il tuo progetto Firebase esistente non ha Google Analytics attivata, puoi attivare Google Analytics dalla Integrazioni dei tuoi > 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 successivi.

  1. Scarica l'SDK Firebase Unity, quindi decomprimi l'SDK in un percorso semplice da raggiungere. L'SDK Firebase Unity non è specifico della piattaforma.

  2. Nel tuo progetto Unity aperto, vai a Asset > Importa pacchetto > Pacchetto personalizzato.

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

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

  4. Nella finestra Importa il pacchetto Unity, fai clic su Importa.

Passaggio 2: inizializza Crashlytics

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

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

    2. Fai clic su Aggiungi componente nell'Ispezione 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 è obbligatorio solo per le app per Android che utilizzano IL2CPP.

  • Per le app per 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é la piattaforma Firebase Unity Il plug-in Editor configura automaticamente il progetto Xcode per caricare i simboli.

L'SDK Unity 8.6.1 e versioni successive di Crashlytics include automaticamente la segnalazione degli arresti anomali NDK, che consente a Crashlytics di segnalare automaticamente gli arresti anomali di Unity IL2CPP su Android. Tuttavia, per vedere le analisi dello stack simbolizzate per la libreria nativa arresti anomali nella dashboard Crashlytics, devi caricare le informazioni sui simboli su la creazione in base al tempo di creazione utilizzando l'interfaccia a riga di comando Firebase.

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

Se hai già installato l'interfaccia a riga di comando, assicurati di aggiornarla alla versione più recente.

Passaggio 4: crea il progetto e carica i simboli

iOS+ (piattaforma Apple)

  1. Dalla finestra di dialogo Impostazioni di compilazione, esporta il 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 progetto Xcode per generare e caricare un file di simboli compatibile con Crashlytics sui server Firebase per ogni build.

Android

  1. Nella finestra di dialogo Impostazioni build, esegui una delle seguenti operazioni:

    • Esportare in un progetto Android Studio per compilare il progetto oppure

    • Compila l'APK direttamente da Unity Editor.
      Prima di eseguire il build, assicurati che la casella di controllo Crea symbols.zip sia selezionata nella finestra di dialogo Impostazioni di compilazione.

  2. Al termine della compilazione, genera un file di simboli compatibile con Crashlytics e caricalo sui server Firebase eseguendo il seguente comando Firebase CLI:

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

    • PATH/TO/SYMBOLS: il percorso del file di simboli generato dall'oggetto interfaccia a riga di comando

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

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

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

    Segnala Descrizione
    --generator=csym

    Utilizza il generatore di file di simboli cSYM legacy al posto del Generatore di Breakpad predefinito

    L'utilizzo è sconsigliato. Ti consigliamo di utilizzare il valore predefinito Generatore di file di simboli di blocco di emergenza.

    --generator=breakpad

    Utilizza il generatore di file di simboli Breakpad

    Tieni presente che l'impostazione predefinita per la generazione dei file di simboli è Breakpad. Utilizza questo flag solo se hai aggiunto symbolGenerator { csym() } nella configurazione di compilazione e vuoi sostituirlo per utilizzare Breakpad.

    --dry-run

    Genera i file dei simboli, ma non li carica

    Questo flag è utile se vuoi ispezionare i contenuti dei file 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 nel Dashboard Crashlytics della console Firebase, devi forzare un test in modo anomalo.

  1. Trova un elemento GameObject esistente e aggiungi 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 build.

    • iOS e versioni successive: il plug-in Firebase Unity Editor configura automaticamente il progetto Xcode per caricare il file dei simboli.

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

  3. Esegui l'app. Una volta in esecuzione, controlla il log del dispositivo e attendi che si attivi l'eccezione da CrashlyticsTester.

    • iOS e versioni successive: visualizza i log nel riquadro inferiore di Xcode.

    • Android: per visualizzare i log, esegui il seguente comando nel terminale: adb logcat.

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

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


E questo è tutto. Crashlytics sta ora monitorando la tua app per rilevare arresti anomali. Visita la dashboard di Crashlytics per visualizzare e analizzare tutti i report e le statistiche.

Passaggi successivi

  • (Opzione consigliata) Per le app per Android che utilizzano IL2CPP, ricevi assistenza per il debug degli arresti anomali causati da errori di memoria nativi di raccolta Report GWP-ASan. Questi errori relativi alla memoria possono essere associati a un danneggiamento della memoria all'interno della tua app, che è la causa principale delle vulnerabilità di sicurezza delle app. Per sfruttare questa funzionalità di debug, assicurati che la tua app utilizzi l'SDK Crashlytics più recente per Unity (v10.7.0 e versioni successive) e che abbia GWP-ASan abilitato esplicitamente (è necessario modificare il file Android App Manifest).
  • Esegui l'integrazione con Google Play in modo da poter filtrare i report sugli arresti anomali della tua app per Android in base al canale Google Play direttamente nella dashboard di Crashlytics. In questo modo puoi concentrare meglio la tua dashboard su build specifiche.