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 Apple. Si no tienes ninguna app para Apple, puedes descargar una app de ejemplo.

  2. Recomendación: Para obtener funciones como usuarios que no experimentan fallas, registros de rutas de navegación y alertas de velocidad, debes habilitar Google Analytics en tu proyecto de Firebase.

    Todas las plataformas de Apple que son compatibles con Crashlytics (excepto watchOS) pueden aprovechar estas funciones de Google Analytics. Ten en cuenta que necesitas la versión v8.9.0 o una versión posterior del SDK para las apps de macOS y tvOS.

    • Si el proyecto de Firebase actual no tiene habilitado Google Analytics, puedes hacerlo en la pestaña Integraciones de tu  > 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.

Paso 1: Agrega el SDK de Crashlytics a tu app

Usa Swift Package Manager para instalar y administrar las dependencias de Firebase.

  1. En Xcode, con tu proyecto de app abierto, navega a File > Add Packages.
  2. Cuando se te solicite, agrega el repositorio del SDK de Firebase para plataformas de Apple:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Elige la biblioteca de Crashlytics.
  5. Para obtener una experiencia óptima con Crashlytics, te recomendamos habilitar Google Analytics en tu proyecto de Firebase y agregar el SDK de Firebase para Google Analytics a la app. Puedes seleccionar la biblioteca con o sin la colección de IDFA.
  6. Cuando termines, Xcode comenzará a resolver y descargar automáticamente tus dependencias en segundo plano.

A continuación, configura el módulo de Firebase:

  1. Importa el módulo de Firebase en tu struct App o en UIApplicationDelegate:

    Swift

    import Firebase

    Objective‑C

    @import Firebase;
  2. Configura una instancia compartida de FirebaseApp en el método application(_: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, 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.

  1. Abre el lugar de trabajo de Xcode del proyecto y, luego, selecciona su archivo de proyecto en el navegador izquierdo.

  2. En la lista TARGETS, selecciona tu destino de compilación principal.

  3. Haz clic en la pestaña Build Settings y, luego, completa los siguientes pasos para que Xcode genere archivos dSYM en tus compilaciones.

    1. Haz clic en All y, luego, busca debug information format.

    2. Configura el campo Debug Information Format como DWARF with dSYM File para todos tus tipos de compilación.

  4. Haz clic en la pestaña Build Phases y, luego, completa los siguientes pasos para que Xcode pueda procesar tus archivos dSYM y subirlos.

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

    2. Expande la nueva sección Run Script.

    3. 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"
    4. En la sección Input Files, agrega las rutas de acceso de las ubicaciones de los siguientes archivos:

      • La ubicación de los archivos dSYM del proyecto:

        ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}

        Proporcionar la ubicación de los archivos dSYM del proyecto permite que Crashlytics procese dichos archivos con mayor rapidez en el caso de apps grandes.

      • La ubicación del archivo Info.plist compilado de tu proyecto:

        $(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)

        Proporcionar la ubicación del archivo Info.plist compilado del proyecto permite que Crashlytics asocie una versión de la app con los archivos dSYM.

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.

  1. 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
    
  2. Compila y ejecuta tu app en Xcode.

    1. Haz clic en Build and then run the current scheme para compilar la app en un dispositivo de prueba o simulador.

    2. Espera hasta que la app esté en ejecución y, luego, haz clic en Stop running the scheme or action para cerrar la instancia inicial. Esta instancia inicial incluía el depurador que interfiere en Crashlytics.

  3. Fuerza la falla de prueba para enviar el primer informe de fallas de la app, de la siguiente manera:

    1. Abre la app desde la pantalla principal del dispositivo o simulador.

    2. En tu app, presiona el botón “Test Crash” que agregaste con el código anterior.

    3. Cuando tu app falle, vuelve a ejecutarla desde Xcode para que pueda enviar el informe de fallas a Firebase.

  4. Ve al panel de Crashlytics en 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