Obtén informes de fallas legibles en el panel de Crashlytics

De forma predeterminada, Firebase Crashlytics procesa tus archivos de símbolos de depuración (dSYM) automáticamente para proporcionarte informes de fallas desofuscados y legibles. Por lo general, configuras este comportamiento durante la configuración inicial de Crashlytics en tu app, en particular, con la opción de agregar una secuencia de comandos de ejecución que suba automáticamente archivos dSYM durante la fase de compilación de la app.

Lamentablemente, hay algunos casos en los que se podría producir un error en la carga automática de tus archivos dSYM. En esta guía se proporcionan algunas formas de solucionar problemas cuando Crashlytics no pueden encontrar los archivos dSYM de tu app.

Asegúrate de que Xcode pueda procesar automáticamente los archivos dSYM y subirlos

Cuando configuraste Crashlytics en tu app, configuraste una secuencia de comandos de ejecución para procesar automáticamente los archivos dSYM y subirlos.

Asegúrate de que la configuración de la secuencia de comandos de ejecución de Crashlytics esté actualizada con los nuevos requisitos que comenzaron con Xcode 15. Si la configuración no está actualizada, es posible que recibas el siguiente error:
error: Info.plist Error Unable to process Info.plist at path ....

En particular, Xcode 15 y las versiones posteriores requieren que proporciones un conjunto más completo de ubicaciones de archivos. Para la secuencia de comandos de ejecución de Crashlytics (firebase-ios-sdk/Crashlytics/run), asegúrate de tener la siguiente configuración:

  1. Haz clic en la pestaña Build Phases y, luego, expande la sección Run Script.

  2. En la sección Archivos de entrada, asegúrate de tener las rutas para 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)

Verifica si Xcode genera archivos dSYM

La mayoría de las veces, los archivos dSYM se pierden porque Xcode simplemente no los produce. Cuando falla una carga, Crashlytics muestra una alerta “dSYM faltante” en Firebase console. Si recibes esta alerta, primero verifica que Xcode genere el dSYM correcto para cada compilación:

  1. Abre tu proyecto en Xcode y, luego, selecciona el archivo de proyecto en el Navegador de Xcode.

  2. Selecciona tu objetivo de compilación principal.

  3. Abre la pestaña Build Settings del destino y, luego, haz clic en All.

  4. Busca debug information format.

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

  6. Vuelve a compilar la app.

Tus informes de fallas ahora deberían aparecer en el panel de Crashlytics. Si el problema persiste o se producen otros errores, intenta localizar los archivos dSYM y subirlos de forma manual a Crashlytics.

Localiza tus archivos dSYM en una máquina local

Ejecuta el siguiente comando para mostrar todos los UUID de los dSYM en tu máquina y, luego, busca el dSYM faltante:

mdfind -name .dSYM | while read -r line; do dwarfdump -u "$line"; done

Una vez que encuentres el dSYM, súbelo a Crashlytics de forma manual. Si el comando mdfind no muestra ningún resultado, puedes buscar en el directorio Products en el que se encuentra .app (de forma predeterminada, el directorio Products está en Derived Data). Si la app se lanza a producción, también puedes buscar su dSYM en el directorio .xcarchive del disco:

  1. En Xcode, abre la ventana Organizer y, luego, selecciona tu app de la lista. Xcode muestra una lista de archivos para tu proyecto.

  2. Mantén la tecla Control presionada y haz clic en un archivo para verlo en Finder. Vuelve a hacer clic en la tecla Control y, luego, en Show Package Contents.

  3. Dentro de .xcarchive, hay un directorio dSYM que contiene archivos dSYM generados como parte del proceso de archivado de Xcode.

Sube los archivos dSYM

Crashlytics admite múltiples formas de subir los archivos dSYM, ya sea automáticamente o de forma manual.

(Recomendado) Procesa automáticamente tus archivos dSYM y súbelos

Cuando configuraste Crashlytics, lo más probable es que hayas configurado este comportamiento de carga automática para tu app. Sin embargo, si fallan las cargas automáticas, verifica que la configuración sea correcta.

Sube manualmente tus archivos dSYM

Si las cargas automáticas fallan, puedes subir tus archivos dSYM de forma manual con cualquiera de las siguientes opciones.

  • Opción 1: Usa la opción “Arrastrar y soltar” basada en la consola para subir un archivo ZIP que contenga tus archivos dSYM (ve a Firebase console > Crashlytics) > la pestaña dSYM).

  • Opción 2: Usa la secuencia de comandos upload-symbols a la que puedes llamar desde cualquier parte de tu proceso de compilación para subir manualmente tus archivos dSYM. Para ejecutar la secuencia de comandos upload-symbols, usa alguna de las siguientes opciones:

    • Opción A: Incluye la siguiente línea en el proceso de compilación:

      find dSYM_DIRECTORY -name "*.dSYM" | xargs -I \{\} $PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p PLATFORM \{\}
    • Opción B: Ejecuta la secuencia de comandos directamente desde la terminal:

      /PATH/TO/PODS/DIRECTORY/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p ios /PATH/TO/dSYMs

    Para ver notas de uso y más instrucciones sobre esta secuencia de comandos, ejecuta upload-symbols con el parámetro --help.