Obtén informes de fallas legibles en el panel de Crashlytics
De forma predeterminada, Firebase Crashlytics instrumenta automáticamente tu proyecto de
Flutter para subir los archivos de símbolos necesarios para garantizar que los informes de fallas estén
desofuscados y sean legibles por humanos.
Sin embargo, hay casos en los que el proyecto no se configura por
completo. En esta guía, se describe lo que hace la automatización y se indican los primeros pasos para depurar la configuración de tu proyecto.
Plataformas de Apple
Verifica la configuración para subir archivos dSYM
Cuando agregas el complemento de Flutter de Crashlytics y ejecutas el
comando flutterfire configure se intentará agregar una secuencia de comandos de ejecución al
lugar de trabajo de Xcode del proyecto que encuentre y suba los archivos de símbolos dSYM necesarios
a Crashlytics. Sin estos archivos, verás la alerta "dSYM faltante" en
el panel de Crashlytics y el backend retendrá las excepciones hasta
que se suban los archivos faltantes.
Si tienes este problema, primero asegúrate de instalar la secuencia de comandos de ejecución:
Ubica y abre el archivo del lugar de trabajo de Xcode en el directorio de iOS de tu proyecto
(FLUTTER_PROJECT_NAME/ios/Runner.xcworkspace).
Identifica si se agregó una secuencia de comandos de ejecución llamada
[firebase_crashlytics] Crashlytics Upload Symbols a las fases de compilación
del destino del ejecutor.
La secuencia de comandos de ejecución para la carga automática de archivos dSYM no existe
Si esta secuencia de comandos de ejecución no existe, puedes agregarla de forma manual:
Busca el ID de la app de Firebase de tu app para Apple. Hay dos lugares diferentes
en los que puedes encontrar este ID:
En Firebase console, ve a
settings > Configuración del proyecto.
Desplázate hacia abajo hasta la tarjeta Tus apps y, luego, haz clic en
tu app de Firebase para Apple para ver la información de la app, incluido su ID.
En el directorio de nivel superior de tu proyecto de Flutter, busca el archivo firebase_options.dart. El ID de la app de Firebase de tu app para Apple se etiqueta como GOOGLE_APP_ID.
Haz clic en add >
New Run Script Phase.
Asegúrate de que esta nueva fase Run Script sea la última fase de compilación
del proyecto. De lo contrario, Crashlytics no podrá procesar correctamente los archivos dSYM.
Expande la nueva sección Run Script.
En el campo de la secuencia de comandos (ubicado en la etiqueta Shell), agrega las
siguientes secuencias de comandos de ejecución.
Estas secuencias de comandos procesan tus archivos dSYM y los suben a
Crashlytics.
FIREBASE_APP_ID: El ID de la app para Apple de Firebase (no el
ID de paquete de Apple)
Ejemplo de ID de app de Firebase para Apple: 1:1234567890:ios:321abc456def7890
¿Necesitas encontrar el ID de la app de Firebase?
Puedes hacerlo de las siguientes dos maneras:
En el archivo GoogleService-Info.plist, el ID de la app es el
valor GOOGLE_APP_ID.
En Firebase console, ve a
Configuración del proyecto.
Desplázate hacia abajo hasta la tarjeta Tus apps y, luego, haz clic en la app de Firebase
que quieres para buscar su ID.
En la sección Input Files, agrega las rutas de acceso de las ubicaciones de los
siguientes archivos:
Comprende por qué son necesarias 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 la secuencia de comandos de ejecución. Además, si la zona de pruebas de secuencias de comandos de usuario está habilitada, Xcode solo permite que la secuencia de comandos de ejecución acceda a los archivos especificados en los archivos de entrada.
Proporcionar la ubicación de los archivos dSYM del proyecto permite
que Crashlytics procese los archivos dSYM.
Proporcionar la ubicación del archivo
GoogleService-Info.plist
compilado de tu app permite que Crashlytics asocie los archivos dSYM con tu
app de Firebase.
Proporcionar la ubicación del ejecutable de tu app permite que la secuencia de comandos de ejecución evite subir archivos duplicados del mismo dSYM. Ten en cuenta que los objetos binarios de la app no se subieron.
Existe una secuencia de comandos para la carga automática de archivos dSYM
Si la secuencia de comandos de ejecución existe, consulta la
guía específica de Apple para solucionar problemas de dSYM.
Si eliges subir tus archivos dSYM a través del proceso descrito,
deberás completar los siguientes pasos adicionales:
Busca el ID de la app de Firebase de tu app para Apple. Hay dos lugares diferentes
en los que puedes encontrar este ID:
En Firebase console, ve a
settings > Configuración del proyecto.
Desplázate hacia abajo hasta la tarjeta Tus apps y, luego, haz clic en
tu app de Firebase para Apple para ver la información de la app, incluido su ID.
En el directorio de nivel superior de tu proyecto de Flutter, busca el archivo firebase_options.dart. El ID de la app de Firebase de tu app para Apple se etiqueta como GOOGLE_APP_ID.
Cuando ejecutes la secuencia de comandos upload-symbols, usa -ai FIREBASE_APPLE_APP_ID en lugar de
-gsp /path/to/GoogleService-Info.plist.
Verifica la configuración de tu versión para Flutter y Crashlytics(si usas la marca --split-debug-info)
Si tu proyecto de Flutter usa la marca --split-debug-info (y, de forma opcional, la marca --obfuscate), se requieren pasos adicionales para mostrar seguimientos de pila legibles de tu app.
Asegúrate de que en tu proyecto se use la configuración de versión recomendada
(Flutter 3.12.0 y versiones posteriores y el complemento de Flutter de Crashlytics 3.3.4 y versiones posteriores) para que tu proyecto
genere y suba automáticamente símbolos de Flutter (archivos dSYM) a
Crashlytics.
Android
Verifica la configuración de tu dependencia
El comando flutterfire configure intenta agregar dependencias necesarias a
los archivos de compilación de Gradle de tu proyecto. Sin estas dependencias, los informes de fallas en
Firebase console podrían ofuscarse si está activada la ofuscación.
Asegúrate de que las siguientes líneas estén presentes en el build.gradle de nivel de proyecto
y en el build.gradle de nivel de la app:
En el archivo de compilación de nivel de proyecto (android/build.gradle), verifica la
siguiente línea:
En el archivo de compilación de nivel de la app (android/app/build.gradle), verifica la
siguiente línea:
// ... other importsandroid{// ... your android config}dependencies{// ... your dependencies}// This section must appear at the bottom of the fileapplyplugin:'com.google.gms.google-services'applyplugin:'com.google.firebase.crashlytics'
Verifica que uses la CLI para subir símbolos de Flutter (si se usa la marca --split-debug-info).
Si tu proyecto de Flutter usa la marca --split-debug-info (y, de forma opcional, la marca --obfuscate), se requieren pasos adicionales para mostrar seguimientos de pila legibles de tu app.
Usa Firebase CLI (v11.9.0 y versiones posteriores) para subir símbolos de depuración
de Flutter. Debes subir los símbolos de depuración antes de informar una falla de una
compilación de código ofuscada.
En el directorio raíz de tu proyecto de Flutter, ejecuta el siguiente comando:
FIREBASE_APP_ID: El ID de la app para Android de Firebase (no el
nombre del paquete)
ID de ejemplo de la app para Android de Firebase: 1:567383003300:android:17104a2ced0c9b9b
¿Necesitas encontrar el ID de la app de Firebase?
Puedes hacerlo de las siguientes dos maneras:
En el archivo google-services.json, el ID de la app es el
valor mobilesdk_app_id.
En Firebase console, ve a
Configuración del proyecto.
Desplázate hacia abajo hasta la tarjeta Tus apps y, luego, haz clic en la app de Firebase
que quieres para buscar su ID.
PATH/TO/symbols: Es el mismo directorio que pasas a la marca --split-debug-info cuando compilas la aplicación.