Comienza a usar Firebase Crashlytics


En esta guía de inicio rápido, se describe cómo configurar Firebase Crashlytics en tu app con el SDK de Firebase Crashlytics para que puedas obtener informes de fallas completos en Firebase console.

La configuración de Crashlytics requiere realizar tareas en Firebase console y en tu IDE (por ejemplo, agregar un archivo de configuración de Firebase y el SDK de Crashlytics). Para finalizar la configuración, deberás forzar una falla de prueba a fin de enviar el primer informe de fallas a Firebase.

Antes de comenzar

  1. Si aún no lo has hecho, agrega Firebase a tu proyecto de Unity. Si aún no tienes un proyecto de Unity, puedes descargar una app de ejemplo.

  2. Recomendación: Para obtener automáticamente registros de rutas de navegación y comprender las acciones del usuario que conducen a una falla, un evento recuperable o de ANR, debes habilitar Google Analytics en tu proyecto de Firebase.

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

    • Si quieres crear un nuevo proyecto de Firebase, habilita Google Analytics durante el flujo de trabajo de creación del proyecto.

Paso 1: Agrega el SDK de Crashlytics a tu app

Ten en cuenta que, si registraste tu proyecto de Unity con el de Firebase, es posible que ya hayas descargado el SDK de Unity Firebase y agregado los paquetes que se describen en los siguientes pasos.

  1. Descarga el SDK de Firebase Unity y descomprímelo en la ubicación que prefieras. El SDK de Firebase Unity no es específico para cada plataforma.

  2. Abre el proyecto de Unity, ve a Elementos > Importar paquete > Paquete personalizado.

  3. En el SDK que descomprimiste, selecciona importar el SDK de Crashlytics (FirebaseCrashlytics.unitypackage).

    Para aprovechar los registros de rutas de navegación, también agrega el SDK de Firebase para Google Analytics a tu app (FirebaseAnalytics.unitypackage). Asegúrate de que Google Analytics esté habilitado en tu proyecto de Firebase.

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

Paso 2: Inicializa Crashlytics

  1. Crea una secuencia de comandos nueva en C# y agrégala a GameObject en el ambiente.

    1. Abre la primera escena y crea un GameObject vacío con el nombre CrashlyticsInitializer.

    2. Haz clic en Add Component en el Inspector del objeto nuevo.

    3. Selecciona la secuencia de comandos CrashlyticsInit para agregarla al objeto CrashlyticsInitializer.

  2. Inicializa Crashlytics en el método Start de la secuencia de comandos:

    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 para Android): Configura la carga de símbolos

Este paso solo es necesario para las apps para Android que usan IL2CPP.

  • En las apps para Android que usan el backend de secuencias de comandos Mono de Unity, estos pasos no son necesarios.

  • Tampoco son necesarios en las apps de la plataforma de Apple porque el complemento de Firebase Unity Editor configura tu proyecto de Xcode automáticamente para subir símbolos.

El SDK de Unity 8.6.1 y versiones posteriores de Crashlytics incluye informes de fallas del NDK, lo que permite a Crashlytics informar automáticamente sobre las fallas de IL2CPP de Unity en Android. Sin embargo, para ver seguimientos de pila simbolizados sobre fallas de bibliotecas nativas en el panel de Crashlytics, debes subir la información de los símbolos en el tiempo de compilación con Firebase CLI.

Para configurar la carga de símbolos, sigue las instrucciones sobre cómo instalar Firebase CLI.

Si ya instalaste la CLI, asegúrate de actualizarla a su versión más reciente.

Paso 4: Crea tu proyecto y sube símbolos

iOS+ (plataforma de Apple)

  1. Desde el diálogo Build Settings, exporta tu proyecto a un lugar de trabajo de Xcode.

  2. Crea la app.

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

Android

  1. En el diálogo Build Settings, realiza una de las siguientes acciones:

    • Exporta a un proyecto de Android Studio para compilar tu propio proyecto.

    • Compila tu APK directamente en Unity Editor.
      Antes de compilar, asegúrate de que la casilla de verificación Create symbols.zip esté marcada en el diálogo Build Settings.

  2. Una vez que finalice la compilación, genera un archivo de símbolos compatible con Crashlytics y súbelo a los servidores de Firebase; para ello, ejecuta el siguiente comando de Firebase CLI:

    firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
    • FIREBASE_APP_ID: El ID de la app para Android de Firebase (no el nombre del paquete)
      ID de ejemplo de la app para Android de Firebase: 1:567383003300:android:17104a2ced0c9b9b

    • PATH/TO/SYMBOLS es la ruta de acceso al archivo de símbolos que genera la CLI

      • Si se exportó 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 app con Gradle o Android Studio.

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

    Consulta las opciones avanzadas para usar el comando de Firebase CLI para subir y generar archivos de símbolos

    Marca Descripción
    --generator=csym

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

    No se recomienda utilizarlo. Recomendamos usar el generador de archivos de símbolos de Breakpad predeterminado.

    --generator=breakpad

    Usa el generador de archivos de símbolos de Breakpad.

    Ten en cuenta que la configuración predeterminada para generar archivos de símbolos es Breakpad. Solo debes usar esta marca si agregaste symbolGenerator { csym() } a la configuración de tu compilación y quieres anularla para usar Breakpad.

    --dry-run

    Genera los archivos de símbolos, pero no los sube.

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

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

Paso 5: Fuerza una falla de prueba para finalizar la configuración

Para finalizar la configuración de Crashlytics y ver los datos iniciales en el panel de Crashlytics de Firebase console, debes forzar una falla de prueba.

  1. Busca un GameObject existente y agrégale la siguiente secuencia de comandos. Esta secuencia de comandos causará una falla de prueba unos segundos después de ejecutar la 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. Compila tu app y sube la información de los símbolos después de que termine el proceso.

    • iOS+: El complemento Firebase Unity Editor configura tu proyecto de Xcode para subir tu archivo de símbolos automáticamente.

    • Android: En el caso de tus apps para Android que usan IL2CPP, ejecuta el comando crashlytics:symbols:upload de Firebase para subir el archivo de símbolos.

  3. Ejecuta la app. Después de hacerlo, revisa el registro del dispositivo y espera a que se active la excepción desde CrashlyticsTester.

    • iOS+: Puedes ver los registros en el panel inferior de Xcode.

    • Android: Ejecuta el comando adb logcat en la terminal para ver los registros.

  4. Ve al panel de Crashlytics de Firebase console para ver la falla de prueba.

    Si actualizaste la consola y sigues sin poder ver la falla de prueba después de cinco minutos, habilita el registro de depuración para confirmar si tu app está enviando informes de fallas.


Eso es todo. Ahora Crashlytics supervisa tu app para detectar fallas. Visita el panel de Crashlytics para ver y analizar todos los informes y estadísticas.

Próximos pasos

  • (Recomendado) En el caso de las apps para Android que usan IL2CPP, recopila informes de GWP-ASan para obtener ayuda con la depuración de fallas causadas por errores de memoria nativa. Estos errores relacionados con la memoria se pueden asociar con la corrupción de la memoria dentro de tu app, lo que es la causa principal de las vulnerabilidades de seguridad de las apps. Para aprovechar esta función de depuración, asegúrate de que tu app use el SDK de Crashlytics para Unity más reciente (v10.7.0 y versiones posteriores) y que tenga GWP-ASan habilitado explícitamente (requiere que modifiques el manifiesto de la app para Android).
  • Realiza integraciones en Google Play para que puedas filtrar los informes de fallas de tu app para Android por segmento de Google Play directamente en el panel de Crashlytics. Esto te permite enfocar mejor el panel en compilaciones específicas.