Comience con Firebase Crashlytics

Este inicio rápido describe cómo configurar Firebase Crashlytics en tu aplicación con el SDK de Firebase Crashlytics para que puedas obtener informes completos sobre fallas en Firebase console.

Configurar Crashlytics requiere tareas tanto en Firebase console como en tu IDE (como agregar un archivo de configuración de Firebase y el SDK de Crashlytics). Para finalizar la configuración, deberás forzar una prueba de falla para enviar tu primer informe de falla a Firebase.

Antes de que empieces

  1. Si aún no lo has hecho, agrega Firebase a tu proyecto de Apple. Si no tiene una aplicación de Apple, puede descargar una aplicación de muestra .

  2. Recomendado : para obtener automáticamente registros de ruta de navegación para comprender las acciones del usuario que conducen a un evento de falla, no fatal o ANR, debe habilitar Google Analytics en su proyecto de Firebase.

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

    • Si estás creando un nuevo proyecto de Firebase, habilita Google Analytics durante el flujo de trabajo de creación del proyecto.

    Tenga en cuenta que los registros de ruta de navegación están disponibles para todas las plataformas Apple compatibles con Crashlytics, excepto watchOS.

Paso 1 : agregue el SDK de Crashlytics a su aplicación

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

  1. En Xcode, con el proyecto de su aplicación abierto, navegue hasta Archivo > Agregar paquetes .
  2. Cuando se le solicite, agregue el repositorio SDK de las plataformas Firebase Apple:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Elija la biblioteca Crashlytics.
  5. Para aprovechar los registros de ruta de navegación , agregue también el SDK de Firebase para Google Analytics a su aplicación. Asegúrese de que Google Analytics esté habilitado en su proyecto de Firebase.
  6. Agregue el indicador -ObjC a la sección Otros indicadores del vinculador de la configuración de compilación de su objetivo.
  7. (solo macOS) En su Info.plist , agregue la clave NSApplicationCrashOnExceptions y configúrela en YES .
  8. Cuando termine, Xcode comenzará automáticamente a resolver y descargar sus dependencias en segundo plano.

A continuación, configure el módulo Firebase:

  1. Importe el módulo Firebase en su estructura App o UIApplicationDelegate :

    Rápido

    import Firebase

    C objetivo

    @import Firebase;
  2. Configure una instancia compartida FirebaseApp , generalmente en el método application(_:didFinishLaunchingWithOptions:) del delegado de su aplicación:

    Rápido

    // Use the Firebase library to configure APIs.
    FirebaseApp.configure()
    

    C objetivo

    // Use the Firebase library to configure APIs.
    [FIRApp configure];
    

Paso 2 : configura Xcode para cargar automáticamente archivos dSYM

Para generar informes de fallos legibles por humanos, Crashlytics necesita los archivos de símbolo de depuración (dSYM) de su proyecto. Los siguientes pasos describen cómo configurar Xcode para producir automáticamente sus dSYM, procesarlos y cargar los archivos cada vez que cree su aplicación.

  1. Abra el espacio de trabajo Xcode de su proyecto, luego seleccione su archivo de proyecto en el navegador izquierdo.

  2. En la lista OBJETIVOS , seleccione su objetivo de construcción principal.

  3. Haga clic en la pestaña Configuración de compilación , luego complete los siguientes pasos para que Xcode produzca dSYM para sus compilaciones.

    1. Haga clic en Todo y luego busque debug information format .

    2. Establezca el formato de información de depuración en DWARF with dSYM File para todos sus tipos de compilación.

  4. Haga clic en la pestaña Fases de compilación , luego complete los siguientes pasos para que Xcode pueda procesar sus dSYM y cargar los archivos.

    1. Haga clic en > Nueva fase de ejecución de script .

      Asegúrese de que esta nueva fase de Ejecutar script sea la última fase de compilación de su proyecto; de lo contrario, Crashlytics no podrá procesar correctamente los dSYM.

    2. Expanda la nueva sección Ejecutar script .

    3. En el campo de secuencia de comandos (ubicado debajo de la etiqueta Shell ), agregue la siguiente secuencia de comandos de ejecución.

      Este script procesa los archivos dSYM de su proyecto y los carga en Crashlytics.

      "${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
    4. En la sección Archivos de entrada , agregue las rutas 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 los archivos dSYM y Crashlytics (incluido cómo cargar archivos dSYM manualmente), visite Obtener informes de fallos desofuscados .

Paso 3 : fuerce una prueba de bloqueo para finalizar la configuración

Para terminar de configurar Crashlytics y ver los datos iniciales en el panel de Crashlytics de Firebase console, debes forzar una prueba de bloqueo.

  1. Agregue código a su aplicación que pueda usar para forzar una falla de prueba.

    Puede usar el siguiente código para agregar un botón a su aplicación que, cuando se presiona, provoca un bloqueo. El botón tiene la etiqueta "Test Crash".

    Interfaz de usuario rápida

    Button("Crash") {
      fatalError("Crash was triggered")
    }
    

    UIKit

    Rápido

    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]
      }
    }
    

    C objetivo

    #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. Cree y ejecute su aplicación en Xcode con el depurador de Xcode desconectado.

    1. Haga clic en Construir y luego ejecute el esquema actual para construir su aplicación en un dispositivo o simulador de prueba.

    2. Espere hasta que su aplicación se esté ejecutando, luego haga clic en Detener la ejecución del esquema o acción para cerrar la instancia inicial de su aplicación. Esta instancia inicial incluía el depurador que interfiere con Crashlytics.

  3. Fuerza el bloqueo de prueba para enviar el primer informe de bloqueo de tu aplicación:

    1. Abra su aplicación desde la pantalla de inicio de su dispositivo de prueba o simulador.

    2. En su aplicación, presione el botón "Probar bloqueo" que agregó usando el código anterior.

    3. Después de que su aplicación falle, ejecútela nuevamente desde Xcode para que su aplicación pueda enviar el informe de fallas a Firebase.

  4. Vaya al panel de Crashlytics de Firebase console para ver el fallo de su prueba.

    Si actualizó la consola y aún no ve el fallo de prueba después de cinco minutos, habilite el registro de depuración para ver si su aplicación envía informes de fallos.


¡Y eso es! Crashlytics ahora está monitoreando su aplicación en busca de fallas. Visite el panel de Crashlytics para ver e investigar todos sus informes y estadísticas.

Próximos pasos

,

Este inicio rápido describe cómo configurar Firebase Crashlytics en tu aplicación con el SDK de Firebase Crashlytics para que puedas obtener informes completos sobre fallas en Firebase console.

Configurar Crashlytics requiere tareas tanto en Firebase console como en tu IDE (como agregar un archivo de configuración de Firebase y el SDK de Crashlytics). Para finalizar la configuración, deberás forzar una prueba de falla para enviar tu primer informe de falla a Firebase.

Antes de que empieces

  1. Si aún no lo has hecho, agrega Firebase a tu proyecto de Apple. Si no tiene una aplicación de Apple, puede descargar una aplicación de muestra .

  2. Recomendado : para obtener automáticamente registros de ruta de navegación para comprender las acciones del usuario que conducen a un evento de falla, no fatal o ANR, debe habilitar Google Analytics en su proyecto de Firebase.

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

    • Si estás creando un nuevo proyecto de Firebase, habilita Google Analytics durante el flujo de trabajo de creación del proyecto.

    Tenga en cuenta que los registros de ruta de navegación están disponibles para todas las plataformas Apple compatibles con Crashlytics, excepto watchOS.

Paso 1 : agregue el SDK de Crashlytics a su aplicación

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

  1. En Xcode, con el proyecto de su aplicación abierto, navegue a Archivo> Agregar paquetes .
  2. Cuando se le solicite, agregue el repositorio SDK de las plataformas Firebase Apple:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Elija la biblioteca de Crashlytics.
  5. Para aprovechar los registros de pan de pan , también agregue el SDK de Firebase para Google Analytics a su aplicación. Asegúrese de que Google Analytics esté habilitado en su proyecto Firebase.
  6. Agregue el indicador -ObjC a la sección de los otros indicadores de enlace de la configuración de compilación de su objetivo.
  7. (solo macOS) NSApplicationCrashOnExceptions YES Info.plist .
  8. Cuando termine, Xcode comenzará automáticamente a resolver y descargar sus dependencias en segundo plano.

A continuación, configure el módulo Firebase:

  1. Importar el módulo Firebase en su App Struct o UIApplicationDelegate :

    Rápido

    import Firebase

    C objetivo

    @import Firebase;
  2. Configure una instancia compartida FirebaseApp , típicamente en application(_:didFinishLaunchingWithOptions:) Método:

    Rápido

    // Use the Firebase library to configure APIs.
    FirebaseApp.configure()
    

    C objetivo

    // Use the Firebase library to configure APIs.
    [FIRApp configure];
    

Paso 2 : Configure Xcode para cargar automáticamente los archivos DSYM

Para generar informes de choque legibles por humanos, Crashlytics necesita los archivos del símbolo de depuración de su proyecto (DSYM). Los siguientes pasos describen cómo configurar Xcode para producir automáticamente sus DSYM, procesarlos y cargar los archivos cada vez que cree su aplicación.

  1. Abra el espacio de trabajo XCode de su proyecto, luego seleccione su archivo de proyecto en el navegador izquierdo.

  2. En la lista de objetivos , seleccione su objetivo de compilación principal.

  3. Haga clic en la pestaña Configuración de compilación , luego complete los siguientes pasos para que Xcode produzca DSYMS para sus compilaciones.

    1. Haga clic en todos , luego busque debug information format .

    2. Establezca el formato de información de depuración para DWARF with dSYM File para todos sus tipos de compilación.

  4. Haga clic en la pestaña Fases de compilación , luego complete los siguientes pasos para que Xcode pueda procesar sus DSYM y cargar los archivos.

    1. Haga clic en > nueva fase de script de ejecución .

      Asegúrese de que esta nueva fase de script de ejecución sea la última fase de construcción de su proyecto; De lo contrario, Crashlytics no puede procesar adecuadamente los DSYM.

    2. Expanda la nueva sección de script de ejecución .

    3. En el campo de script (ubicado debajo de la etiqueta de shell ), agregue el siguiente script de ejecución.

      Este script procesa los archivos DSYM de su proyecto y carga los archivos a Crashlytics.

      "${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
    4. En la sección Archivos de entrada , agregue las rutas 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 los archivos DSYM y Crashlytics (incluida la forma de cargar manualmente los archivos DSYM), visite los informes de Crash Get Deobfuscated .

Paso 3 : Forzar un bloqueo de prueba para finalizar la configuración

Para finalizar la configuración de Crashlytics y ver los datos iniciales en el tablero de Crashlytics de la consola Firebase, debe forzar un bloqueo de prueba.

  1. Agregue el código a su aplicación que puede usar para forzar un bloqueo de prueba.

    Puede usar el siguiente código para agregar un botón a su aplicación que, cuando se presiona, causa un bloqueo. El botón está etiquetado como "bloqueo de prueba".

    Interfaz de usuario rápida

    Button("Crash") {
      fatalError("Crash was triggered")
    }
    

    UIKit

    Rápido

    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]
      }
    }
    

    C objetivo

    #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. Construya y ejecute su aplicación en Xcode con el depurador Xcode desconectado.

    1. Haga clic en Build y luego ejecute el esquema actual para construir su aplicación en un dispositivo de prueba o simulador.

    2. Espere hasta que su aplicación se esté ejecutando, luego haga clic en de Ejecutar la ejecución del esquema o acción para cerrar la instancia inicial de su aplicación. Esta instancia inicial incluyó el depurador que interfiere con Crashlytics.

  3. Force el bloqueo de la prueba para enviar el primer informe de bloqueo de su aplicación:

    1. Abra su aplicación desde la pantalla de inicio de su dispositivo de prueba o simulador.

    2. En su aplicación, presione el botón "Prueba de bloqueo" que agregó usando el código anterior.

    3. Después de que su aplicación se bloquee, ejecute nuevamente desde Xcode para que su aplicación pueda enviar el informe de bloqueo a Firebase.

  4. Vaya al tablero de Crashlytics de la consola Firebase para ver el bloqueo de su prueba.

    Si ha renovado la consola y todavía no está viendo la prueba de bloqueo después de cinco minutos, habilite el registro de depuración para ver si su aplicación está enviando informes de bloqueo.


¡Y eso es! Crashlytics ahora está monitoreando su aplicación para accidentes. Visite el tablero de Crashlytics para ver e investigar todos sus informes y estadísticas.

Próximos pasos