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
Si aún no lo has hecho, agrega Firebase a tu proyecto de Apple. Si no tienes ninguna app para Apple, puedes descargar una app de ejemplo.
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
en > Configuración del proyectoFirebase console. Si quieres crear un nuevo proyecto de Firebase, habilita Google Analytics durante el flujo de trabajo de creación del proyecto.
Ten en cuenta que los registros de rutas de navegación están disponibles para todas las plataformas de Apple compatibles con Crashlytics, excepto watchOS.
Paso 1: Agrega el SDK de Crashlytics a tu app
Usa Swift Package Manager para instalar y administrar las dependencias de Firebase.
- En Xcode, con tu proyecto de app abierto, navega a File > Add Packages.
- Cuando se te solicite, agrega el repositorio del SDK de Firebase para plataformas de Apple:
- Elige la biblioteca de Crashlytics.
- Para aprovechar los registros de rutas de navegación, también agrega el SDK de Firebase para Google Analytics a tu app. Asegúrate de que Google Analytics esté habilitado en tu proyecto de Firebase.
- Agrega la marca
-ObjC
a la sección Other Linker Flags de la configuración de compilación de tu destino. - (Solo para macOS) En tu
Info.plist
, agrega la claveNSApplicationCrashOnExceptions
y configúrala comoYES
. - Cuando termines, Xcode comenzará a resolver y descargar automáticamente tus dependencias en segundo plano.
https://github.com/firebase/firebase-ios-sdk.git
A continuación, configura el módulo de Firebase:
Importa el módulo de Firebase en tu struct
App
o enUIApplicationDelegate
:Swift
import Firebase
Objective-C
@import Firebase;
Configura una instancia compartida de
FirebaseApp
en el métodoapplication(_:didFinishLaunchingWithOptions:)
del delegado de la app:Swift
// Use the Firebase library to configure APIs. FirebaseApp.configure()
Objective-C
// Use the Firebase library to configure APIs. [FIRApp configure];
Paso 2: Configura Xcode para subir archivos dSYM de forma automática
Para generar informes de fallas legibles por humanos, Crashlytics necesita los archivos del símbolo de depuración del proyecto (dSYM). En los siguientes pasos, se describe cómo configurar Xcode para producir automáticamente tus archivos dSYM, procesarlos y subir los archivos cada vez que compiles tu app.
Abre el lugar de trabajo de Xcode del proyecto y, luego, selecciona su archivo de proyecto en el navegador izquierdo.
En la lista TARGETS, selecciona tu destino de compilación principal.
Haz clic en la pestaña Build Settings y, luego, completa los siguientes pasos para que Xcode genere archivos dSYM en tus compilaciones.
Haz clic en All y, luego, busca
debug information format
.Configura el campo Debug Information Format como
DWARF with dSYM File
para todos tus tipos de compilación.
Haz clic en la pestaña Build Phases y, luego, completa los siguientes pasos para que Xcode pueda procesar tus archivos dSYM y subirlos.
Haz clic en
> New Run Script Phase.Asegúrate de que esta nueva fase Run Script sea la última fase de compilación del proyecto. De lo contrario, Crashlytics no podrá procesar correctamente los archivos dSYM.
Expande la nueva sección Run Script.
En el campo de la secuencia de comandos (ubicado en la etiqueta Shell), agrega la siguiente secuencia de comandos de ejecución.
Esta secuencia de comandos procesa los archivos dSYM de tu proyecto y los sube a Crashlytics.
"${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
En la sección Input Files, agrega las rutas de acceso de las ubicaciones de los siguientes archivos:
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist
$(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist
$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)
Para obtener información más detallada sobre archivos dSYM y Crashlytics (incluido cómo subir archivos dSYM de forma manual), consulta Obtén informes de fallas desofuscados.
Paso 3: 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.
Agrega código a tu app para forzar una falla de prueba.
Puedes usar el siguiente código para agregar un botón a tu app que, cuando se presione, cause una falla. El botón tiene la etiqueta “Test Crash”.
SwiftUI
Button("Crash") { fatalError("Crash was triggered") }
UIKit
Swift
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. let button = UIButton(type: .roundedRect) button.frame = CGRect(x: 20, y: 50, width: 100, height: 30) button.setTitle("Test Crash", for: []) button.addTarget(self, action: #selector(self.crashButtonTapped(_:)), for: .touchUpInside) view.addSubview(button) } @IBAction func crashButtonTapped(_ sender: AnyObject) { let numbers = [0] let _ = numbers[1] } }
Objective-C
#import "ViewController.h" @implementation ViewController ‐ (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; button.frame = CGRectMake(20, 50, 100, 30); [button setTitle:@"Test Crash" forState:UIControlStateNormal]; [button addTarget:self action:@selector(crashButtonTapped:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button]; } ‐ (IBAction)crashButtonTapped:(id)sender { @[][1]; } @end
Compila y ejecuta tu app en Xcode con el depurador de Xcode desconectado.
Haz clic en
Build and then run the current scheme para compilar la app en un dispositivo de prueba o simulador.Espera hasta que la app esté en ejecución y, luego, haz clic en Crashlytics.
Detener la ejecución del esquema o la acción para cerrar la instancia inicial de la app. Esta instancia inicial incluía el depurador que interfiere en
Fuerza la falla de prueba para enviar el primer informe de fallas de la app, de la siguiente manera:
Abre la app desde la pantalla principal del dispositivo o simulador.
En tu app, presiona el botón “Test Crash” que agregaste con el código anterior.
Cuando tu app falle, vuelve a ejecutarla desde Xcode para que pueda enviar el informe de fallas a Firebase.
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
- Personaliza la configuración de informes de fallas agregando informes, registros y claves opcionales, así como seguimiento de errores recuperables.