Actualiza al SDK de Firebase Crashlytics

Ahora puedes configurar Crashlytics en tu app con el nuevo SDK oficial de Firebase Crashlytics, que ofrece API mejoradas que son más coherentes con otros productos de Firebase y más intuitivas de usar.

En esta guía, se describe cómo realizar la actualización al nuevo SDK desde el SDK heredado de Fabric. También se describen los cambios que traen las nuevas API, el motivo de los cambios y cómo actualizar tu código, si es necesario.

Antes de comenzar

Fabric agrega GameObjects a tu ambiente para inicializar Crashlytics en tu juego y directorios adicionales para los SDK.

Para asegurarte de que no haya conflictos entre los complementos de Crashlytics de Fabric y Firebase Crashlytics, quita los siguientes archivos y carpetas de Fabric de tu proyecto de Unity:

  • En Assets, borra los siguientes archivos:

    Assets/
       Editor Default Resources/
           FabricSettings.asset     <- DELETE
       Fabric/                      ><- DELETE
       Plugins/
           Android/
               answers/             ><- DELETE
               beta/                ><- DELETE
               crashlytics/         ><- DELETE
               crashlytics-wrapper/ ><- DELETE
               fabric/              ><- DELETE
               fabric-init/         ><- DELETE
           iOS/
               Fabric/              ><- DELETE
    >
  • En la ventana de jerarquía, quita los siguientes GameObjects:

    SampleScene
        Main Camera
        Directional Light
        Canvas
        EventSystem
        FabricInit                  <- DELETE CrashlyticsInit><- DELETE
    >
  • Quita todas las entradas de Fabric en Assets > Plugins > Android > AndroidManifest.xml.

    Por ejemplo, puedes quitar esta clave conocida android:name="io.fabric.unity.android.FabricApplication".

    Busca y quita las otras entradas de Fabric que pueda tener.

Paso 1: Agrega un archivo de configuración de Firebase

  1. Abre la Configuración del proyecto. En la tarjeta Tus apps, selecciona el ID del paquete o el nombre del paquete de la app para el que necesitas un archivo de configuración.

  2. Descarga los archivos de configuración de Firebase específicos para cada app.

    • Para iOS+: GoogleService-Info.plist
    • Para Android: google-services.json

    Puedes tener dos archivos de configuración como máximo para cada proyecto de Unity.

  3. En tu proyecto de Unity, abre la ventana Project y, luego, transfiere los archivos de configuración a la carpeta Assets.

Paso 2: Agrega el SDK de Firebase Crashlytics

  1. Descarga el SDK de Firebase Unity y descomprímelo en el lugar que prefieras.

    El SDK de Firebase Unity no es específico para cada plataforma.

  2. Abre tu proyecto de Unity, ve a Assets > Import Package > Custom Package.

  3. En el SDK que descomprimiste, selecciona importar el SDK de Crashlytics (FirebaseCrashlytics.unitypackage). Asegúrate de tener la versión 6.15.0 de FirebaseCrashlytics.unitypackage o una posterior (si no la tienes, actualiza la versión del paquete de elementos). Esto es necesario para que los informes de fallas se muestren en Firebase console.

    • Unity 2017.x y las versiones posteriores permiten usar .NET Framework 4.x. Si el proyecto de Unity usa .NET 4.x, importa dotnet4/FirebaseCrashlytics.unitypackage.

    Ten en cuenta que también puedes importar cualquier otro producto de Firebase compatible.

  4. En la ventana Import Unity Package, haz clic en Import.

  5. Crea una secuencia de comandos nueva en C# y agrégala a GameObject en la escena.

    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.

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

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    // Import Firebase
    using Firebase;
    
    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;
    
                  // 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()
      // ...
    }

Una vez que agregues el SDK a tu app y se inicialice, Crashlytics comenzará a trabajar automáticamente para detectar y recopilar informes de fallas.

Paso 3: Actualiza tu código

Revisa los siguientes cambios del SDK y realiza las actualizaciones correspondientes en tu código:

Crashlytics ahora rota los ID en función de los ID de instalación de Firebase

Crashlytics usa el UUID de instalación de Crashlytics para identificar instancias de tu app y asociar los datos de los usuarios con sus dispositivos. Anteriormente, Crashlytics rotaba el UUID de instalación del usuario cuando cambiaba el ID de publicidad de su dispositivo. Ahora Crashlytics rota el UUID de instalación según el ID de instalación de Firebase (FID) del usuario. Para obtener más información, consulta cómo administrar los ID de instalación de Firebase.

Motivo del cambio

El uso de FID es coherente con otros SDK de Firebase.

Fabric.Crashlytics ahora es Firebase.Crashlytics

Cambiamos nuestro espacio de nombres de Fabric a Firebase.

Fabric

using Fabric.Crashlytics;

Firebase

using Firebase.Crashlytics;

RecordCustomException ahora es LogException

Registra las excepciones personalizadas y recuperables ya capturadas y manejadas.

Fabric

Crashlytics.RecordCustomException(string name, string reason, StackTrace stackTrace);
Crashlytics.RecordCustomException(string name, string reason, string stackTraceString);

Firebase

Crashlytics.LogException(Exception ex);

Motivo del cambio

Esta función se utiliza con mayor frecuencia para registrar una instancia de una Exception. En lugar de solicitarte que extraigas manualmente el “nombre”, el “motivo” y el “seguimiento de pila”, que da como resultado un código superfluo, ahora puedes proporcionar la instancia de la Exception para que Firebase Crashlytics extraiga la información necesaria.

Solución alternativa

Si aprovechaste estos parámetros de una manera que no fuera solo extraer información directamente de una excepción y deseas mantener este comportamiento, puedes crear tu propia subclase de Exception con los metadatos personalizados en su descripción.

SetKeyValue ahora es SetCustomKey

Configura cualquier par clave-valor para que lo envíes junto con el informe de fallas. Si vuelves a configurar la misma clave, el valor se actualizará.

Fabric

Crashlytics.SetKeyValue(string key, string value);

Firebase

Crashlytics.SetCustomKey(string key, string value);

Motivo del cambio

Se cambió el nombre de este método para que su comportamiento sea más claro y a fin de mejorar la coherencia con las otras API de Firebase.

SetUserIdentifier ahora es SetUserId

Configura un identificador de usuario para saber cuál usuario tuvo una falla.

Fabric

Crashlytics.SetUserIdentifier(string identifier);

Firebase

Crashlytics.SetUserId(string identifier);

Motivo del cambio

Se cambió el nombre de este método para mejorar la coherencia con las otras API de Firebase. Como valor agregado, es más corto. Todos preferimos escribir menos, ¿no?

Eliminación de SetUserEmail y SetUserName

Anteriormente, se permitía configurar un nombre o un correo electrónico asociado a una falla a través de métodos explícitos. Estos métodos ya no estarán definidos explícitamente.

Fabric

Crashlytics.SetUserEmail(string email);
Crashlytics.SetUserName(string name);

Motivo del cambio

Google se esfuerza por proteger los datos del cliente. Parte de este esfuerzo es diseñar las API, que, a su vez, realizan la misma acción para las herramientas de los desarrolladores. Estas API específicas para el usuario se quitaron con el fin de fomentar el uso de métodos generados de identificación no personal, y reconocer cuál usuario tuvo una falla.

Solución alternativa

Usa SetUserId como método preferente para especificar cuál usuario experimentó una falla. Sin embargo, si esta no es una solución sostenible. Puedes hacer lo mismo con SetCustomKey.

Eliminación de fallas y ThrowNonFatal

Anteriormente, Crashlytics ofrecía dos métodos de utilidad para emitir excepciones a fin de realizar pruebas. Estas ya no se incluirán en Firebase Crashlytics.

Fabric

Crashlytics.Crash();
Crashlytics.ThrowNonFatal();

Motivo del cambio

Crashlytics para Unity se ejecuta en muchos entornos diferentes, por lo que pueden ocurrir muchas fallas. Estos métodos no especifican claramente si las fallas resultantes ocurrieron en C# o en el SDK nativo específico para cada plataforma subyacente.

Solución alternativa

  • Prueba la implementación. Para ello, fuerza una falla de prueba que envíe un informe de fallas al panel de Crashlytics en Firebase console.

Paso 4: Compila tu proyecto

  1. Exporta tu proyecto con el diálogo Build Settings de Unity.

  2. Cuando se complete la exportación, compara tu proyecto exportado con los siguientes ejemplos de configuración de exportación para verificar que se haya exportado correctamente.

    iOS+

    Android

  3. Si te parece que faltan archivos después de comparar el proyecto, abre Unity Editor y ejecuta el agente de resolución de Servicios de Google Play (consulta las siguientes instrucciones).

Ejecuta el agente de resolución si faltan archivos después de la exportación (según sea necesario)

External Dependency Manager for Unity (EDM4U) se asegura de que tu proyecto de Unity tenga las dependencias de tiempo de ejecución adecuadas para las plataformas de Apple y Android. Si quieres obtener más información sobre el agente de resolución, consulta el archivo README del agente de resolución del archivo JAR de Unity.

Próximos pasos