Preguntas frecuentes y solución de problemas de Crashlytics


En esta página, se proporciona ayuda para solucionar problemas y respuestas a preguntas frecuentes sobre el uso de Crashlytics. Si no encuentras lo que buscas o necesitas más ayuda, comunícate con el equipo de asistencia de Firebase.

Es posible que observes dos formatos diferentes de problemas que aparecen en la tabla de Problemas de Firebase console. También es posible que veas una función llamada “variantes” en algunos de tus problemas. Estas son las razones.

A principios de 2023, lanzamos un motor de análisis mejorado para agrupar eventos, un diseño actualizado y algunas funciones avanzadas para problemas nuevos (como las variantes). Consulta nuestra entrada de blog reciente para obtener todos los detalles. También puedes leer la siguiente información si quieres conocer los aspectos más destacados.

Crashlytics analiza todos los eventos de tu app (como fallas, errores recuperables y ANR) y crea grupos de eventos llamados problemas. Todos los eventos en un problema tienen un punto común de falla.

Para agrupar los eventos en estos problemas, el motor de análisis mejorado ahora analiza muchos aspectos de cada evento, incluidos los fotogramas del seguimiento de pila, el mensaje de excepción, el código de error y otras características de los tipos de errores o las plataformas.

Sin embargo, incluso dentro de este grupo de eventos, los seguimientos de pila que llevan al error pueden ser diferentes. Un seguimiento de pila diferente puede implicar una causa raíz diferente. Para representar esta posible diferencia dentro de un problema, creamos variantes dentro de ellos. Cada variante es un subgrupo de eventos en un problema que tienen el mismo punto de falla y un seguimiento de pila similar. Con las variantes, puedes depurar los seguimientos de pila más comunes dentro de un problema y determinar si distintas causas raíz llevan al error.

A continuación, te indicamos lo que experimentarás con estas mejoras:

  • Metadatos renovados que se muestran en la fila de problemas
    Ahora es más fácil comprender y clasificar los problemas de tu app.

  • Una menor cantidad de problemas duplicados
    Un cambio en el número de línea no genera un problema nuevo.

  • Depuración más sencilla de problemas complejos con varias causas raíz
    Usa variantes para depurar los seguimientos de pila más comunes dentro de un problema.

  • Indicadores y alertas más significativos
    Un nuevo problema en realidad representa un error nuevo.

  • Búsqueda más eficaz
    Cada problema contiene metadatos más fáciles de buscar, como el tipo de excepción y el nombre del paquete.

A continuación, te mostramos cómo se implementan estas mejoras:

  • Cuando recibamos eventos nuevos de tu app, verificaremos si coinciden con un problema existente.

  • Si no hay ninguna coincidencia, aplicaremos automáticamente nuestro algoritmo más inteligente de agrupación de eventos y crearemos un problema nuevo con el diseño de metadatos renovado.

Esta es la primera actualización importante que realizamos en nuestra agrupación de eventos. Si tienes comentarios o tienes algún problema, completa un informe para informarnos al respecto.

Si no ves métricas sin fallas (como usuarios y sesiones que no experimentaron fallas) ni alertas de velocidad, asegúrate de usar la versión v10.8.0 del SDK de Crashlytics y versiones posteriores.

Si no ves los registros de rutas de navegación, te recomendamos verificar la configuración de tu app para Google Analytics. Asegúrate de cumplir con los siguientes requisitos:

Para subir los archivos dSYM de tu proyecto y obtener un resultado detallado, verifica lo siguiente:

  1. Asegúrate de que la fase de compilación del proyecto contenga la secuencia de comandos de ejecución de Crashlytics, que permite que Xcode suba los archivos dSYM de tu proyecto en el momento de la compilación (consulta Inicializa Crashlytics si necesitas instrucciones para entregar la secuencia de comandos). Después de actualizar el proyecto, fuerza una falla y confirma que la falla aparezca en el panel de Crashlytics.

  2. Si ves la alerta "dSYM faltante" en Firebase console, revisa Xcode para asegurarte de que esté produciendo correctamente los archivos de dSYM de la compilación.

  3. Si Xcode genera archivos dSYM de forma correcta y aún ves archivos dSYM faltantes, es probable que la herramienta de secuencia de comandos de ejecución se detenga mientras subes los dSYM. En ese caso, prueba cada uno de los siguientes pasos:

    • Asegúrate de usar la versión más reciente de Crashlytics.

    • Sube los archivos dSYM faltantes de forma manual:

      • Opción 1: Usa la opción “Arrastrar y soltar” basada en la consola en la pestaña dSYMs para subir un archivo ZIP que contenga los archivos dSYM faltantes.
      • Opción 2: Usa la secuencia de comandos upload-symbols para subir los archivos dSYM faltantes de los UUID proporcionados en la pestaña dSYMs.
  4. Si todavía ves archivos dSYM faltantes o aún no se completan las cargas, comunícate con el equipo de Asistencia de Firebase y asegúrate de incluir tus registros.

Si los seguimientos de pila no tienen una buena simbolización, verifica lo siguiente:

  • Si los marcos de la biblioteca de tu app no tienen referencias al código de esta, asegúrate de que -fomit-frame-pointer no esté configurado como una marca de compilación.

  • Si ves varios marcos (Missing) para la biblioteca de tu app, verifica si hay archivos dSYM opcionales enumerados como faltantes (en la versión de la app afectada) en la pestaña Crashlytics dSYMs de Firebase console. Si es así, sigue el paso para solucionar problemas de alertas sobre dSYM faltantes en las Preguntas frecuentes sobre dSYM faltantes o que no se suben en esta página. Ten en cuenta que subir estos archivos dSYM no simbolizará las fallas que ya ocurrieron, pero esto ayudará a garantizar la simbolización de las fallas futuras.

Las notas permiten a los miembros del proyecto comentar problemas específicos con preguntas, actualizaciones de estado, etcétera.

Cuando un miembro del proyecto publica una nota, se etiqueta con el correo electrónico de su Cuenta de Google. Todos los miembros del proyecto con acceso para ver la nota pueden verla junto con la dirección de correo electrónico.

A continuación, se describe el acceso requerido para ver, escribir y borrar notas:

Consulta Información sobre las métricas sin fallas.

Las notas permiten a los miembros del proyecto comentar problemas específicos con preguntas, actualizaciones de estado, etcétera.

Cuando un miembro del proyecto publica una nota, se etiqueta con el correo electrónico de su Cuenta de Google. Todos los miembros del proyecto con acceso para ver la nota pueden verla junto con la dirección de correo electrónico.

A continuación, se describe el acceso requerido para ver, escribir y borrar notas:

Integraciones

Si tu proyecto usa Crashlytics junto con el SDK de Google Mobile Ads, es probable que los generadores de informes de fallas interfieran cuando se registran controladores de excepciones. Para solucionar el problema, desactiva los informes de fallas en el SDK de Mobile Ads; para ello, llama a disableSDKCrashReporting.

Después de vincular Crashlytics con BigQuery, los nuevos conjuntos de datos que creas se ubican automáticamente en Estados Unidos, sin importar la ubicación de tu proyecto de Firebase.

Plataformas compatibles

Sí, puedes implementar Crashlytics en proyectos de macOS y tvOS. Asegúrate de incluir la versión 8.9.0 del SDK de Firebase para Google Analytics para que las fallas tengan acceso a las métricas que recopila Google Analytics (usuarios que no experimentaron fallas, versión más reciente, alertas de velocidad y registros de rutas de navegación).

Ahora puedes informar fallas de varias apps en un solo proyecto de Firebase, incluso si las apps se crearon para diferentes plataformas de Apple (p. ej., iOS, tvOS y Mac Catalyst). Anteriormente, se debían separar las apps en proyectos de Firebase individuales si contenían el mismo ID de paquete.

Problemas con regresiones

Estos problemas suceden cuando ya se cerró un problema, pero Crashlytics informa que volvió a ocurrir. Crashlytics vuelve a abrir automáticamente el problema para que puedas solucionarlo según corresponda en tu app.

Aquí encontrarás un ejemplo en el que se explica cómo Crashlytics define que un problema es una regresión:

  1. Crashlytics recibe un informe sobre la falla "A" por primera vez. Crashlytics abre un problema que corresponda a la falla (problema "A").
  2. Para corregir el error rápidamente, debes cerrar el problema “A” y, luego, lanzar una nueva versión de tu app.
  3. Crashlytics recibe otro informe sobre el problema "A" después de que lo cierras.
    • Si el informe es de una versión de la app que Crashlytics conocía cuando cerraste el problema (es decir, la versión envió un informe de fallas sobre cualquier falla), Crashlytics no considerará el problema como regresión y permanecerá cerrado.
    • Si el informe es de una versión de la app que Crashlytics no conocía cuando cerraste el problema (es decir, la versión nunca envió ningún informe de fallas), Crashlytics considera que el problema volvió a su estado original y lo abrirá de nuevo.

Cuando sucede una regresión de problema, enviamos una alerta de detección de regresión y agregamos un indicador al problema para informarte que Crashlytics lo volvió a abrir. Si no quieres que se vuelva a abrir un problema debido al algoritmo de regresión, “silencia” el problema en lugar de cerrarlo.

Si un informe es de una versión antigua de la app que no envió ningún informe de fallas cuando cerraste el problema, Crashlytics considera que el problema volvió a ocurrir y lo abrirá de nuevo.

Esto puede suceder en el siguiente caso: Corregiste un error y lanzaste una versión nueva de la app, pero aún tienes usuarios que utilizan versiones anteriores sin la corrección de errores. Si, por casualidad, una de esas versiones anteriores nunca envió ningún informe de fallas cuando cerraste el problema, y los usuarios comenzaron a detectar el error, esos informes de fallas activaron la regresión.

Si no quieres que se vuelva a abrir un problema debido al algoritmo de regresión, “silencia” el problema en lugar de cerrarlo.