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 funciones como usuarios sin fallas, registros de ruta de navegación y alertas de velocidad, 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 el paquete Crashlytics.

  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 ).

    También puedes importar cualquier otro producto de Firebase compatible .

  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.