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
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 .
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
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
En Xcode, con el proyecto de su aplicación abierto, navegue hasta Archivo > Agregar paquetes . Cuando se le solicite, agregue el repositorio SDK de las plataformas Firebase Apple: - Elija la biblioteca Crashlytics.
- 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.
- Agregue el indicador
-ObjC
a la sección Otros indicadores del vinculador de la configuración de compilación de su objetivo. - (solo macOS) En su
Info.plist
, agregue la claveNSApplicationCrashOnExceptions
y configúrela enYES
. - Cuando termine, Xcode comenzará automáticamente a resolver y descargar sus dependencias en segundo plano.
https://github.com/firebase/firebase-ios-sdk.git
Importe el módulo Firebase en su estructura App
oUIApplicationDelegate
:import Firebase @import Firebase; Configure una instancia compartida FirebaseApp
, generalmente en el métodoapplication(_:didFinishLaunchingWithOptions:)
del delegado de su aplicación:// Use the Firebase library to configure APIs.
FirebaseApp.configure()// Use the Firebase library to configure APIs.
[FIRApp configure];
Paso 2 : configura Xcode para cargar automáticamente archivos dSYM
Abra el espacio de trabajo Xcode de su proyecto, luego seleccione su archivo de proyecto en el navegador izquierdo. En la lista OBJETIVOS , seleccione su objetivo de construcción principal. Haga clic en la pestaña Configuración de compilación , luego complete los siguientes pasos para que Xcode produzca dSYM para sus compilaciones. Haga clic en Todo y luego busque debug information format
.Establezca el formato de información de depuración en DWARF with dSYM File
para todos sus tipos de compilación.
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. 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. Expanda la nueva sección Ejecutar script . 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" 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) Comprender por qué se necesitan las ubicaciones de estos archivos Xcode busca en las ubicaciones especificadas estos archivos de entrada para garantizar que los archivos de compilación estén disponibles para el script de ejecución. Además, si el User Script Sandboxing está habilitado, Xcode solo permite que el script en ejecución acceda a los archivos especificados en los Archivos de entrada . Proporcionar la ubicación de los archivos dSYM de su proyecto permite a Crashlytics procesar dSYM. Proporcionar la ubicación del archivo GoogleService-Info.plist
creado por su aplicación permite a Crashlytics asociar los dSYM con su aplicación Firebase.Proporcionar la ubicación del ejecutable de su aplicación permite que el script de ejecución evite cargas duplicadas del mismo dSYM. Tenga en cuenta que los binarios de las aplicaciones no se cargan .
Paso 3 : fuerce una prueba de bloqueo para finalizar la configuración
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". Button("Crash") {
fatalError("Crash was triggered")
}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]
}
}#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];
}
@endCree y ejecute su aplicación en Xcode con el depurador de Xcode desconectado. Haga clic en Construir y luego ejecute el esquema actual para construir su aplicación en un dispositivo o simulador de prueba.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.
Fuerza el bloqueo de prueba para enviar el primer informe de bloqueo de tu aplicación: Abra su aplicación desde la pantalla de inicio de su dispositivo de prueba o simulador. En su aplicación, presione el botón "Probar bloqueo" que agregó usando el código anterior. 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.
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.
Próximos pasos
Personalice la configuración de su informe de fallos agregando informes, registros, claves y seguimiento de errores no fatales.
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
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 .
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 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
En Xcode, con el proyecto de su aplicación abierto, navegue a Archivo> Agregar paquetes . Cuando se le solicite, agregue el repositorio SDK de las plataformas Firebase Apple: - Elija la biblioteca de Crashlytics.
- 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.
- Agregue el indicador
-ObjC
a la sección de los otros indicadores de enlace de la configuración de compilación de su objetivo. - (solo macOS)
NSApplicationCrashOnExceptions
YES
Info.plist
. - Cuando termine, Xcode comenzará automáticamente a resolver y descargar sus dependencias en segundo plano.
https://github.com/firebase/firebase-ios-sdk.git
Importar el módulo Firebase en su App
Struct oUIApplicationDelegate
:import Firebase @import Firebase; Configure una instancia compartida FirebaseApp
, típicamente enapplication(_:didFinishLaunchingWithOptions:)
Método:// Use the Firebase library to configure APIs.
FirebaseApp.configure()// Use the Firebase library to configure APIs.
[FIRApp configure];
Paso 2 : Configure Xcode para cargar automáticamente los archivos DSYM
Abra el espacio de trabajo XCode de su proyecto, luego seleccione su archivo de proyecto en el navegador izquierdo. En la lista de objetivos , seleccione su objetivo de compilación principal. Haga clic en la pestaña Configuración de compilación , luego complete los siguientes pasos para que Xcode produzca DSYMS para sus compilaciones. Haga clic en todos , luego busque debug information format
.Establezca el formato de información de depuración para DWARF with dSYM File
para todos sus tipos de compilación.
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. 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. Expanda la nueva sección de script de ejecución . 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" 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) Comprender por qué se necesitan las ubicaciones de estos archivos XCode busca en las ubicaciones especificadas para estos archivos de entrada para garantizar que los archivos de compilación estén disponibles para el script Ejecutar. Además, si el script de usuarios Sandboxing está habilitado, Xcode solo permite que el script Ejecutar acceda a los archivos especificados en los archivos de entrada . Proporcionar la ubicación de los archivos DSYM de su proyecto permite a Crashlytics procesar DSYMS. Proporcionar la ubicación del archivo GoogleService-Info.plist
de su aplicación permite a Crashlytics asociar los DSYMS con su aplicación Firebase.Proporcionar la ubicación del ejecutable de su aplicación permite que el script Ejecutar evite cargas duplicadas del mismo DSYM. Tenga en cuenta que los binarios de la aplicación no están cargados .
Paso 3 : Forzar un bloqueo de prueba para finalizar la configuración
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". Button("Crash") {
fatalError("Crash was triggered")
}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]
}
}#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];
}
@endConstruya y ejecute su aplicación en Xcode con el depurador Xcode desconectado. Haga clic en Build y luego ejecute el esquema actual para construir su aplicación en un dispositivo de prueba o simulador.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.
Force el bloqueo de la prueba para enviar el primer informe de bloqueo de su aplicación: Abra su aplicación desde la pantalla de inicio de su dispositivo de prueba o simulador. En su aplicación, presione el botón "Prueba de bloqueo" que agregó usando el código anterior. 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.
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.
Próximos pasos
Personalice la configuración de su informe de bloqueo agregando informes de opción, registros, claves y seguimiento de errores no fatales.