Obtenga informes de fallos legibles en el panel de Crashlytics

De forma predeterminada, Firebase Crashlytics instrumenta automáticamente su proyecto Flutter para cargar los archivos de símbolos necesarios que garantizan que los informes de fallos estén desofuscados y sean legibles por humanos.

Desafortunadamente, hay casos que pueden provocar que el proyecto no esté completamente configurado. Esta guía describe lo que hace la automatización y proporciona los primeros pasos para depurar la configuración de su proyecto.

plataformas de manzana

Verifique su configuración para cargar archivos dSYM

Agregar el complemento Crashlytics Flutter y ejecutar el comando flutterfire configure intentará agregar un script de ejecución al espacio de trabajo Xcode de su proyecto que encuentra y carga los archivos de símbolos dSYM necesarios en Crashlytics. Sin estos archivos, verá una alerta "Falta dSYM" en el panel de Crashlytics y el backend retendrá las excepciones hasta que se carguen los archivos faltantes.

Si tiene este problema, primero asegúrese de tener instalado el script de ejecución:

  1. Localice y abra el archivo del espacio de trabajo Xcode en el directorio iOS de su proyecto ( FLUTTER_PROJECT_NAME /ios/Runner.xcworkspace ).

  2. Identifique si se ha agregado un script de ejecución titulado [firebase_crashlytics] Crashlytics Upload Symbols a las fases de compilación del objetivo del corredor.

    Consulte la sección correspondiente a continuación para saber si el script de ejecución no existe o si existe .

Si este script de ejecución no existe, puede agregarlo manualmente:

  1. Localice el ID de la aplicación Firebase para su aplicación Apple. Aquí hay dos lugares diferentes donde puede encontrar esta identificación:

    • En la consola de Firebase, ve a tu > Configuración del proyecto . Desplácese hacia abajo hasta la tarjeta Sus aplicaciones , luego haga clic en su aplicación Firebase Apple para ver la información de la aplicación, incluido su ID de aplicación .

    • En el directorio de nivel superior de su proyecto Flutter, busque su archivo firebase_options.dart . El ID de la aplicación Firebase para tu aplicación Apple está etiquetado como GOOGLE_APP_ID .

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

  3. Expanda la nueva sección Ejecutar script .

  4. En el campo de secuencia de comandos (ubicado debajo de la etiqueta Shell ), agregue los siguientes scripts de ejecución.

    Estos scripts procesan sus archivos dSYM y los cargan en Crashlytics.

    $PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase --validate -ai FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM
    $PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase -ai FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM 
    • FIREBASE_APP_ID : Su ID de la aplicación Firebase Apple (no su ID del paquete Apple)
      Ejemplo de ID de aplicación de Apple de Firebase: 1:1234567890:ios:321abc456def7890

    Aquí hay dos formas de encontrar el ID de su aplicación Firebase:

    • En su archivo GoogleService-Info.plist , su ID de aplicación es el valor GOOGLE_APP_ID ; o

    • En Firebase console, ve a la configuración de tu proyecto . Desplácese hacia abajo hasta la tarjeta Sus aplicaciones , luego haga clic en la aplicación Firebase deseada para encontrar su ID de aplicación.

  5. 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)

    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 .

Si el script de ejecución existe, consulte la guía específica de Apple para solucionar problemas de dSYM . Deberá seguir los siguientes pasos adicionales si elige cargar sus archivos dSYM mediante el proceso descrito:

  1. Localice el ID de la aplicación Firebase para su aplicación Apple. Aquí hay dos lugares diferentes donde puede encontrar esta identificación:

    • En la consola de Firebase, ve a tu > Configuración del proyecto . Desplácese hacia abajo hasta la tarjeta Sus aplicaciones , luego haga clic en su aplicación Firebase Apple para ver la información de la aplicación, incluido su ID de aplicación .

    • En el directorio de nivel superior de su proyecto Flutter, busque su archivo firebase_options.dart . El ID de la aplicación Firebase para tu aplicación Apple está etiquetado como GOOGLE_APP_ID .

  2. Cuando ejecute el script upload-symbols , use -ai FIREBASE_APPLE_APP_ID en lugar de -gsp /path/to/GoogleService-Info.plist .

Verifique la configuración de su versión para Flutter y Crashlytics (si usa el indicador --split-debug-info )

Si su proyecto Flutter usa el indicador --split-debug-info (y, opcionalmente, también el indicador --obfuscate ), se requieren pasos adicionales para mostrar seguimientos de pila legibles para su aplicación.

Asegúrese de que su proyecto esté utilizando la configuración de versión recomendada (Flutter 3.12.0+ y el complemento Crashlytics Flutter 3.3.4+) para que su proyecto pueda generar y cargar automáticamente símbolos Flutter (archivos dSYM) en Crashlytics.

Androide

Verifique la configuración de su dependencia

El comando flutterfire configure intenta agregar las dependencias necesarias a los archivos de compilación Gradle de su proyecto. Sin estas dependencias, los informes de fallas en Firebase console pueden terminar ofuscados si la ofuscación está activada.

Asegúrese de que las siguientes líneas estén presentes en build.gradle a nivel de proyecto y en build.gradle a nivel de aplicación:

  • En el archivo de compilación a nivel de proyecto ( android/build.gradle ), busque la siguiente línea:

    dependencies {
    // ... other dependencies

    classpath
    'com.google.gms:google-services:4.3.5'
    classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
    }
  • En el archivo de compilación a nivel de aplicación ( android/app/build.gradle ), busque la siguiente línea:

    // ... other imports

    android
    {
    // ... your android config
    }

    dependencies
    {
    // ... your dependencies
    }

    // This section must appear at the bottom of the file
    apply plugin
    : 'com.google.gms.google-services'
    apply plugin: 'com.google.firebase.crashlytics'

Verifique que esté usando la CLI para cargar símbolos de Flutter (si usa el indicador --split-debug-info )

Si su proyecto Flutter usa el indicador --split-debug-info (y, opcionalmente, también el indicador --obfuscate ), se requieren pasos adicionales para mostrar seguimientos de pila legibles para su aplicación.

Utilice Firebase CLI (v.11.9.0+) para cargar símbolos de depuración de Flutter. Debe cargar los símbolos de depuración antes de informar un fallo debido a una compilación de código ofuscado.

Desde el directorio raíz de su proyecto Flutter, ejecute el siguiente comando:

firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
  • FIREBASE_APP_ID : el ID de tu aplicación Firebase para Android (no el nombre de tu paquete)
    Ejemplo de ID de aplicación de Firebase para Android: 1:567383003300:android:17104a2ced0c9b9b

    Aquí hay dos formas de encontrar el ID de su aplicación Firebase:

    • En su archivo google-services.json , su ID de aplicación es el valor mobilesdk_app_id ; o

    • En Firebase console, ve a la configuración de tu proyecto . Desplácese hacia abajo hasta la tarjeta Sus aplicaciones , luego haga clic en la aplicación Firebase deseada para encontrar su ID de aplicación.

  • PATH/TO /symbols : el mismo directorio que pasa al indicador --split-debug-info al crear la aplicación.

Si los problemas persisten, consulte la guía específica de Android para solucionar problemas de informes confusos .