Comience con Firebase Crashlytics

Este inicio rápido describe cómo configurar Firebase Crashlytics en tu aplicación con el SDK de Firebase Crashlytics para que puedas obtener informes completos sobre fallas en Firebase console.

Configurar Crashlytics requiere tareas tanto en Firebase console como en tu IDE (como agregar un archivo de configuración de Firebase y el SDK de Crashlytics). Para finalizar la configuración, deberás forzar una prueba de falla para enviar tu primer informe de falla a Firebase.

Antes de que empieces

  1. Si aún no lo has hecho, agrega Firebase a tu proyecto de Unity. Si no tiene un proyecto de Unity, puede descargar una aplicación de muestra .

  2. Recomendado : para obtener automáticamente registros de ruta de navegación para comprender las acciones del usuario que conducen a un evento de falla, no fatal o ANR, debe habilitar Google Analytics en su proyecto de Firebase.

    • Si su proyecto Firebase existente no tiene Google Analytics habilitado, puede habilitar Google Analytics desde la pestaña Integraciones de su > Configuración del proyecto en Firebase console.

    • Si estás creando un nuevo proyecto de Firebase, habilita Google Analytics durante el flujo de trabajo de creación del proyecto.

Paso 1 : agregue el SDK de Crashlytics a su aplicación

Tenga en cuenta que cuando registró su proyecto de Unity con su proyecto de Firebase, es posible que ya haya descargado el SDK de Firebase Unity y haya agregado los paquetes que se describen en los siguientes pasos.

  1. Descargue el SDK de Firebase Unity y luego descomprímalo en algún lugar conveniente. El SDK de Firebase Unity no es específico de la plataforma.

  2. En su proyecto abierto de Unity, navegue hasta Activos > Importar paquete > Paquete personalizado .

  3. Desde el SDK descomprimido, seleccione importar el SDK de Crashlytics ( FirebaseCrashlytics.unitypackage ).

    Para aprovechar los registros de ruta de navegación, agregue también el SDK de Firebase para Google Analytics a su aplicación ( FirebaseAnalytics.unitypackage ). Asegúrese de que Google Analytics esté habilitado en su proyecto de Firebase.

  4. En la ventana Importar paquete de Unity , haga clic en Importar .

Paso 2 : Inicializar Crashlytics

  1. Cree un nuevo script C# y luego agréguelo a un GameObject en la escena.

    1. Abra su primera escena, luego cree un GameObject vacío llamado CrashlyticsInitializer .

    2. Haga clic en Agregar componente en el inspector del nuevo objeto.

    3. Seleccione su script CrashlyticsInit para agregarlo al objeto CrashlyticsInitializer .

  2. Inicialice Crashlytics en el método Start del 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()
        // ...
    }

Paso 3 : (solo Android) Prepárese para cargar símbolos

Este paso solo es necesario para aplicaciones de Android que usan IL2CPP.

  • Para las aplicaciones de Android que utilizan el backend de secuencias de comandos Mono de Unity, estos pasos no son necesarios.

  • Para las aplicaciones de la plataforma Apple, estos pasos no son necesarios porque el complemento Firebase Unity Editor configura automáticamente su proyecto Xcode para cargar símbolos.

Unity SDK 8.6.1+ de Crashlytics incluye automáticamente informes de fallas de NDK, lo que permite a Crashlytics informar automáticamente fallas de Unity IL2CPP en Android. Sin embargo, para ver seguimientos de pila simbolizados para fallas de la biblioteca nativa en el panel de Crashlytics, debes cargar información de símbolos en el momento de la compilación mediante Firebase CLI.

Para configurar la carga de símbolos, siga las instrucciones para instalar Firebase CLI .

Si ya instaló la CLI, asegúrese de actualizar a su última versión .

Paso 4 : construye tu proyecto y sube símbolos

iOS+ (plataforma Apple)

  1. Desde el cuadro de diálogo Configuración de compilación , exporte su proyecto a un espacio de trabajo de Xcode.

  2. Crea tu aplicación.

    Para las plataformas Apple, el complemento Firebase Unity Editor configura automáticamente su proyecto Xcode para generar y cargar un archivo de símbolos compatible con Crashlytics en los servidores de Firebase para cada compilación.

Androide

  1. Desde el cuadro de diálogo Configuración de compilación , realice una de las siguientes acciones:

    • Exporte a un proyecto de Android Studio para construir su proyecto; o

    • Crea tu APK directamente desde Unity Editor.
      Antes de compilar, asegúrese de que la casilla de verificación Crear símbolos.zip esté marcada en el cuadro de diálogo Configuración de compilación .

  2. Una vez que haya finalizado la compilación, genere un archivo de símbolos compatible con Crashlytics y cárguelo en los servidores de Firebase ejecutando el siguiente comando de Firebase CLI:

    firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
    • FIREBASE_APP_ID : el ID de tu aplicación Firebase para Android (no el nombre de tu paquete)
      Ejemplo de ID de aplicación de Firebase para Android: 1:567383003300:android:17104a2ced0c9b9b

    • PATH/TO/SYMBOLS : La ruta al archivo de símbolos generado por la CLI

      • Exportado a un proyecto de Android Studio: PATH/TO/SYMBOLS es el directorio unityLibrary/symbols , que se crea en la raíz del proyecto exportado después de compilar la aplicación a través de Gradle o Android Studio.

      • Compiló el APK directamente desde Unity: PATH/TO/SYMBOLS es la ruta del archivo de símbolos comprimido generado en el directorio raíz del proyecto cuando finalizó la compilación (por ejemplo: myproject/myapp-1.0-v100.symbols.zip ).

    Ver opciones avanzadas para usar el comando Firebase CLI para generar y cargar archivos de símbolos

    Bandera Descripción
    --generator=csym

    Utiliza el generador de archivos de símbolos cSYM heredado en lugar del generador Breakpad predeterminado

    No recomendado para su uso. Recomendamos utilizar el generador de archivos de símbolos predeterminado de Breakpad.

    --generator=breakpad

    Utiliza el generador de archivos de símbolos Breakpad

    Tenga en cuenta que el valor predeterminado para la generación de archivos de símbolos es Breakpad. Utilice esta bandera solo si ha agregado symbolGenerator { csym() } en su configuración de compilación y desea anularlo para usar Breakpad en su lugar.

    --dry-run

    Genera los archivos de símbolos pero no los carga.

    Esta bandera es útil si desea inspeccionar el contenido de los archivos que se envían.

    --debug Proporciona información de depuración adicional.

Paso 5 : fuerce una prueba de bloqueo para finalizar la configuración

Para terminar de configurar Crashlytics y ver los datos iniciales en el panel de Crashlytics de Firebase console, debes forzar una prueba de bloqueo.

  1. Busque un GameObject existente y luego agréguele el siguiente script. Este script provocará un bloqueo de la prueba unos segundos después de ejecutar la aplicación.

    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. Cree su aplicación y cargue información de símbolos una vez finalizada la compilación.

    • iOS+ : el complemento Firebase Unity Editor configura automáticamente su proyecto Xcode para cargar su archivo de símbolos.

    • Android : para sus aplicaciones de Android que usan IL2CPP, ejecute el comando crashlytics:symbols:upload Firebase CLI para cargar su archivo de símbolos.

  3. Ejecute su aplicación. Una vez que su aplicación se esté ejecutando, observe el registro del dispositivo y espere a que se active la excepción desde CrashlyticsTester .

    • iOS+ : vea registros en el panel inferior de Xcode.

    • Android : vea registros ejecutando el siguiente comando en la terminal: adb logcat .

  4. Vaya al panel de Crashlytics de Firebase console para ver el fallo de su prueba.

    Si actualizó la consola y aún no ve el fallo de prueba después de cinco minutos, habilite el registro de depuración para ver si su aplicación envía informes de fallos.


¡Y eso es! Crashlytics ahora está monitoreando su aplicación en busca de fallas. Visite el panel de Crashlytics para ver e investigar todos sus informes y estadísticas.

Próximos pasos

  • (Recomendado) Para aplicaciones de Android que usan IL2CPP, obtenga ayuda para depurar fallas causadas por errores de memoria nativa recopilando informes de GWP-ASan . Estos errores relacionados con la memoria pueden estar asociados con daños en la memoria dentro de su aplicación, que es la causa principal de las vulnerabilidades de seguridad de las aplicaciones. Para aprovechar esta función de depuración, asegúrese de que su aplicación utilice el SDK de Crashlytics más reciente para Unity (v10.7.0+) y tenga GWP-ASan explícitamente habilitado (requiere que modifique su manifiesto de aplicación de Android ).
  • Integre con Google Play para que pueda filtrar los informes de fallos de su aplicación de Android por seguimiento de Google Play directamente en el panel de Crashlytics. Esto le permite centrar mejor su panel en compilaciones específicas.

,

Este inicio rápido describe cómo configurar Firebase Crashlytics en tu aplicación con el SDK de Firebase Crashlytics para que puedas obtener informes completos sobre fallas en Firebase console.

Configurar Crashlytics requiere tareas tanto en Firebase console como en tu IDE (como agregar un archivo de configuración de Firebase y el SDK de Crashlytics). Para finalizar la configuración, deberás forzar una prueba de falla para enviar tu primer informe de falla a Firebase.

Antes de que empieces

  1. Si aún no lo has hecho, agrega Firebase a tu proyecto de Unity. Si no tiene un proyecto de Unity, puede descargar una aplicación de muestra .

  2. Recomendado : para obtener automáticamente registros de ruta de navegación para comprender las acciones del usuario que conducen a un evento de falla, no fatal o ANR, debe habilitar Google Analytics en su proyecto de Firebase.

    • Si su proyecto Firebase existente no tiene Google Analytics habilitado, puede habilitar Google Analytics desde la pestaña Integraciones de su > Configuración del proyecto en Firebase console.

    • Si estás creando un nuevo proyecto de Firebase, habilita Google Analytics durante el flujo de trabajo de creación del proyecto.

Paso 1 : agregue el SDK de Crashlytics a su aplicación

Tenga en cuenta que cuando registró su proyecto de Unity con su proyecto de Firebase, es posible que ya haya descargado el SDK de Firebase Unity y haya agregado los paquetes que se describen en los siguientes pasos.

  1. Descargue el SDK de Firebase Unity y luego descomprímalo en algún lugar conveniente. El SDK de Firebase Unity no es específico de la plataforma.

  2. En su proyecto abierto de Unity, navegue hasta Activos > Importar paquete > Paquete personalizado .

  3. Desde el SDK descomprimido, seleccione importar el SDK de Crashlytics ( FirebaseCrashlytics.unitypackage ).

    Para aprovechar los registros de ruta de navegación, agregue también el SDK de Firebase para Google Analytics a su aplicación ( FirebaseAnalytics.unitypackage ). Asegúrese de que Google Analytics esté habilitado en su proyecto de Firebase.

  4. En la ventana Import Unity Package , haga clic en Importar .

Paso 2 : Inicializar Crashlytics

  1. Cree un nuevo script C#, luego agréguelo a un GameObject en la escena.

    1. Abra su primera escena, luego cree un GameObject vacío llamado CrashlyticsInitializer .

    2. Haga clic en Agregar componente en el inspector para el nuevo objeto.

    3. Seleccione su script CrashlyticsInit para agregarlo al objeto CrashlyticsInitializer .

  2. Inicializar Crashlytics en el método Start del 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()
        // ...
    }

Paso 3 : (solo Android) Conseguen para la carga de símbolos

Este paso solo se requiere para las aplicaciones de Android que usan IL2CPP.

  • Para las aplicaciones de Android que usan el backend mono de Unity, estos pasos no son necesarios.

  • Para las aplicaciones de la plataforma Apple, estos pasos no son necesarios porque el complemento del Editor de Unidad de Firebase configura automáticamente su proyecto XCode para cargar símbolos.

Unity SDK 8.6.1+ de Crashlytics incluye automáticamente el informe de NDK Crash, que permite a Crashlytics informar automáticamente que Unity IL2CPP se bloquea en Android. Sin embargo, para ver rastros de pila simbolinados para los bloqueos de la biblioteca nativa en el tablero de Crashlytics, debe cargar información de símbolos en la hora de compilación utilizando la CLI de Firebase.

Para configurar para la carga de símbolos, siga las instrucciones para instalar la CLI Firebase .

Si ya ha instalado la CLI, asegúrese de actualizar su última versión .

Paso 4 : Cree su proyecto y cargue símbolos

iOS+ (plataforma Apple)

  1. Desde el cuadro de diálogo Configuración de compilación , exporte su proyecto a un espacio de trabajo Xcode.

  2. Crea tu aplicación.

    Para las plataformas de Apple, el complemento del editor de Unity de Firebase configura automáticamente su proyecto XCode para generar y cargar un archivo de símbolos compatible con Crashlytics en servidores Firebase para cada compilación.

Androide

  1. Desde el cuadro de diálogo Configuración de compilación , haga uno de los siguientes:

    • Exportar a un proyecto de Android Studio para construir su proyecto; o

    • Construya su APK directamente desde el editor de Unity.
      Antes de construir, asegúrese de que la casilla de verificación para crear símbolos.zip se verifique en el cuadro de diálogo Configuración de compilación .

  2. Una vez que su compilación haya terminado, genere un archivo de símbolos compatible con Crashlytics y cárguelo a los servidores Firebase ejecutando el siguiente comando Firebase CLI:

    firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
    • FIREBASE_APP_ID : su identificación de la aplicación Firebase Android (no el nombre de su paquete)
      Ejemplo de Firebase Android App ID: 1:567383003300:android:17104a2ced0c9b9b

    • PATH/TO/SYMBOLS : la ruta al archivo de símbolos generado por la CLI

      • Exportado a un proyecto de Android Studio - PATH/TO/SYMBOLS es el directorio unityLibrary/symbols , que se crea en la raíz del proyecto exportado después de construir la aplicación a través de Gradle o Android Studio.

      • Construido el APK directamente desde la unidad - PATH/TO/SYMBOLS es la ruta del archivo de símbolos con zonas generadas en el directorio de la raíz del proyecto cuando terminó su compilación (por ejemplo: myproject/myapp-1.0-v100.symbols.zip ).

    Ver opciones avanzadas para usar el comando Firebase CLI para la generación de archivos de símbolos y cargar

    Bandera Descripción
    --generator=csym

    Utiliza el generador de archivos de símbolos CSYM heredados en lugar del generador de ruptura predeterminado

    No recomendado para su uso. Recomendamos usar el generador de archivos de símbolos Breakpad predeterminado.

    --generator=breakpad

    Utiliza el generador de archivos de símbolos de breakpad

    Tenga en cuenta que el valor predeterminado para la generación de archivos de símbolos es BreakPad. Solo use esta bandera si ha agregado symbolGenerator { csym() } en su configuración de compilación y desea anularlo para usar breakpad.

    --dry-run

    Genera los archivos de símbolos pero no los sube

    Este indicador es útil si desea inspeccionar el contenido de los archivos que se envían.

    --debug Proporciona información de depuración adicional

Paso 5 : Forzar un bloqueo de prueba para finalizar la configuración

Para finalizar la configuración de Crashlytics y ver los datos iniciales en el tablero de Crashlytics de la consola Firebase, debe forzar un bloqueo de prueba.

  1. Encuentre un GameObject existente, luego agréguelo el siguiente script. Este script causará un bloqueo de prueba unos segundos después de ejecutar su aplicación.

    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. Cree su aplicación y cargue información de símbolos después de que termine su compilación.

    • iOS+ : el complemento del editor de unidades de Firebase configura automáticamente su proyecto Xcode para cargar su archivo de símbolos.

    • Android : para sus aplicaciones de Android que usan IL2CPP, ejecute Firebase CLI crashlytics:symbols:upload el comando para cargar su archivo de símbolos.

  3. Ejecute su aplicación. Una vez que su aplicación se esté ejecutando, mire el registro del dispositivo y espere la excepción de activar desde CrashlyticsTester .

    • iOS+ : Ver registros en el panel inferior de Xcode.

    • Android : Vea los registros ejecutando el siguiente comando en el terminal: adb logcat .

  4. Vaya al tablero de Crashlytics de la consola Firebase para ver el bloqueo de su prueba.

    Si ha renovado la consola y todavía no está viendo la prueba de bloqueo después de cinco minutos, habilite el registro de depuración para ver si su aplicación está enviando informes de bloqueo.


¡Y eso es! Crashlytics ahora está monitoreando su aplicación para accidentes. Visite el tablero de Crashlytics para ver e investigar todos sus informes y estadísticas.

Próximos pasos

  • (Recomendado) Para las aplicaciones de Android que usan IL2CPP, obtenga ayuda de depuración de ayuda causados ​​por errores de memoria nativos mediante la recopilación de informes GWP-Asan . Estos errores relacionados con la memoria pueden asociarse con la corrupción de la memoria dentro de su aplicación, que es la principal causa de vulnerabilidades de seguridad de la aplicación. Para aprovechar esta función de depuración, asegúrese de que su aplicación use el último SDK de Crashlytics para Unity (V10.7.0+) y tenga GWP-Asan habilitado explícitamente (requiere que modifique su manifiesto de la aplicación Android ).
  • Integre con Google Play para que pueda filtrar los informes de bloqueo de su aplicación Android de Google Play Track directamente en el Panel de Crashlytics. Esto le permite enfocar mejor su tablero en compilaciones específicas.