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 GameObject
s 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
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.
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.
- Para iOS+:
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
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.
Abre tu proyecto de Unity, ve a Assets > Import Package > Custom Package.
En el SDK que descomprimiste, selecciona importar el SDK de Crashlytics (
FirebaseCrashlytics.unitypackage
). Asegúrate de tener la versión 6.15.0 deFirebaseCrashlytics.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.
- Unity 2017.x y las versiones posteriores permiten usar .NET Framework 4.x. Si el proyecto de Unity usa .NET 4.x, importa
En la ventana Import Unity Package, haz clic en Import.
Crea una secuencia de comandos nueva en C# y agrégala a
GameObject
en la escena.Abre la primera escena y crea un
GameObject
vacío con el nombreCrashlyticsInitializer
.Haz clic en Add Component en el Inspector del objeto nuevo.
Selecciona la secuencia de comandos
CrashlyticsInit
para agregarla al objetoCrashlyticsInitializer
.
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
Exporta tu proyecto con el diálogo Build Settings de Unity.
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
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
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.
Personaliza la configuración de informes de fallas agregando informes, registros y claves opcionales, así como seguimiento de errores recuperables.
Agrega Google Analytics a tu app. Combina la potencia de Google Analytics con Firebase Crashlytics para ver estadísticas de los usuarios sin fallas en Firebase console.