Par défaut, Firebase Crashlytics instrumente automatiquement votre projet Flutter pour importer les fichiers de symboles nécessaires qui garantissent que les rapports d'erreur sont démystifiés et lisibles par l'humain.
Malheureusement, il peut arriver que le projet ne soit pas entièrement configuré. Ce guide décrit le fonctionnement de l'automatisation et fournit les premières étapes à suivre pour déboguer la configuration de votre projet.
Plates-formes Apple
Vérifier votre configuration pour l'importation de fichiers dSYM
Ajouter le plug-in Flutter Crashlytics et exécuter la commande flutterfire configure
tentera d'ajouter un script d'exécution à l'espace de travail Xcode de votre projet, qui recherche et importe les fichiers de symboles dSYM nécessaires dans Crashlytics. Sans ces fichiers, une alerte "dSYM manquant" s'affiche dans le tableau de bord Crashlytics, et les exceptions sont conservées par le backend jusqu'à ce que les fichiers manquants soient importés.
Si vous rencontrez ce problème, assurez-vous d'abord que le script d'exécution est installé:
Recherchez et ouvrez le fichier d'espace de travail Xcode dans le répertoire iOS de votre projet (
FLUTTER_PROJECT_NAME/ios/Runner.xcworkspace
).Identifiez si un script d'exécution intitulé
[firebase_crashlytics] Crashlytics Upload Symbols
a été ajouté aux phases de compilation de la cible Runner.Consultez la section applicable ci-dessous pour savoir si le script d'exécution n'existe pas ou s'il existe.
Le script d'exécution pour l'importation automatique des fichiers dSYM n'existe pas
Si ce script d'exécution n'existe pas, vous pouvez l'ajouter manuellement:
Recherchez l'ID de l'application Firebase de votre application Apple. Voici deux endroits différents où vous pouvez trouver cet ID:
Dans la console Firebase, accédez à
. Faites défiler la page jusqu'à la fiche Vos applications, puis cliquez sur votre application Apple Firebase pour afficher ses informations, y compris son ID d'application. > Paramètres du projet Dans le répertoire de premier niveau de votre projet Flutter, recherchez votre fichier
firebase_options.dart
. L'ID de l'application Firebase de votre application Apple est associé à la valeurGOOGLE_APP_ID
.
Cliquez sur
> Nouvelle phase d'exécution du script.Assurez-vous que cette nouvelle phase Run Script (Exécuter le script) est la dernière phase de compilation de votre projet. Sinon, Crashlytics ne pourra pas traiter correctement les dSYM.
Développez la nouvelle section Exécuter le script.
Dans le champ de script (situé sous l'étiquette Shell), ajoutez les scripts d'exécution suivants.
Ces scripts traitent vos fichiers dSYM et les importent dans 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: votre ID d'application Apple Firebase (et non votre ID de bundle Apple)
Exemple d'ID d'application Apple Firebase:1:1234567890:ios:321abc456def7890
Vous avez besoin de trouver votre ID d'application Firebase ?
Vous pouvez trouver votre ID d'application Firebase de deux manières:
Dans votre fichier
GoogleService-Info.plist
, votre ID d'application est la valeurGOOGLE_APP_ID
; ouDans la console Firebase, accédez à vos Paramètres du projet. Faites défiler la page jusqu'à la fiche Vos applications, puis cliquez sur l'application Firebase souhaitée pour trouver son ID d'application.
- FIREBASE_APP_ID: votre ID d'application Apple Firebase (et non votre ID de bundle Apple)
Dans la section Fichiers d'entrée, ajoutez les chemins d'accès aux emplacements des fichiers suivants:
${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)
Comprendre pourquoi les emplacements de ces fichiers sont nécessaires
Xcode recherche ces fichiers d'entrée dans les emplacements spécifiés pour s'assurer que les fichiers de compilation sont disponibles pour le script d'exécution. De plus, si le bac à sable du script utilisateur est activé, Xcode n'autorise que le script d'exécution à accéder aux fichiers spécifiés dans les fichiers d'entrée.
- Indiquer l'emplacement des fichiers dSYM de votre projet permet à Crashlytics de traiter les dSYM.
- Fournir l'emplacement du fichier
GoogleService-Info.plist
compilé de votre application permet à Crashlytics d'associer les dSYM à votre application Firebase. - Indiquer l'emplacement de l'exécutable de votre application permet au script d'exécution d'éviter les importations en double du même dSYM. Notez que les binaires de l'application ne sont pas importés.
Le script d'exécution pour l'importation automatique des fichiers dSYM existe
Si le script d'exécution existe, consultez le guide spécifique à Apple pour résoudre les problèmes liés aux fichiers dSYM. Si vous choisissez d'importer vos fichiers dSYM via le processus décrit, vous devez suivre les étapes supplémentaires suivantes:
Recherchez l'ID de l'application Firebase de votre application Apple. Voici deux endroits différents où vous pouvez trouver cet ID:
Dans la console Firebase, accédez à
. Faites défiler la page jusqu'à la fiche Vos applications, puis cliquez sur votre application Apple Firebase pour afficher ses informations, y compris son ID d'application. > Paramètres du projet Dans le répertoire de premier niveau de votre projet Flutter, recherchez votre fichier
firebase_options.dart
. L'ID de l'application Firebase de votre application Apple est associé à la valeurGOOGLE_APP_ID
.
Lorsque vous exécutez le script
upload-symbols
, utilisez
au lieu de-ai FIREBASE_APPLE_APP_ID .-gsp /path/to/GoogleService-Info.plist
Vérifiez la configuration de votre version pour Flutter et Crashlytics (si vous utilisez l'option --split-debug-info
)
Si votre projet Flutter utilise l'indicateur --split-debug-info
(et éventuellement l'indicateur --obfuscate
), des étapes supplémentaires sont requises pour afficher des traces de pile lisibles pour votre application.
Assurez-vous que votre projet utilise la configuration de version recommandée (Flutter 3.12.0 ou version ultérieure et plug-in Flutter Crashlytics 3.3.4 ou version ultérieure) afin qu'il puisse générer et importer automatiquement des symboles Flutter (fichiers dSYM) dans Crashlytics.
Android
Vérifier la configuration de vos dépendances
La commande flutterfire configure
tente d'ajouter les dépendances nécessaires aux fichiers de compilation Gradle de votre projet. Sans ces dépendances, les rapports d'erreur de la console Firebase peuvent être obscurcis si l'obscurcissement est activé.
Assurez-vous que les lignes suivantes sont présentes dans le fichier build.gradle
au niveau du projet et dans le fichier build.gradle
au niveau de l'application:
Dans le fichier de compilation au niveau du projet (
android/build.gradle
), recherchez la ligne suivante:dependencies { // ... other dependencies classpath 'com.google.gms:google-services:4.3.5' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1' }
Dans le fichier de compilation au niveau de l'application (
android/app/build.gradle
), recherchez la ligne suivante:// ... 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'
Vérifiez que vous utilisez la CLI pour importer des symboles Flutter (si vous utilisez l'option --split-debug-info
).
Si votre projet Flutter utilise l'indicateur --split-debug-info
(et éventuellement l'indicateur --obfuscate
), des étapes supplémentaires sont requises pour afficher des traces de pile lisibles pour votre application.
Utilisez la CLI Firebase (v.11.9.0 et versions ultérieures) pour importer les symboles de débogage Flutter. Vous devez importer les symboles de débogage avant de signaler un plantage à partir d'un build de code obscurci.
Dans le répertoire racine de votre projet Flutter, exécutez la commande suivante:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO /symbols
FIREBASE_APP_ID: votre ID d'application Android Firebase (et non votre nom de package)
Exemple d'ID d'application Android Firebase:1:567383003300:android:17104a2ced0c9b9b
Vous avez besoin de trouver votre ID d'application Firebase ?
Vous pouvez trouver votre ID d'application Firebase de deux manières:
Dans votre fichier
google-services.json
, votre ID d'application est la valeurmobilesdk_app_id
; ouDans la console Firebase, accédez à vos Paramètres du projet. Faites défiler la page jusqu'à la fiche Vos applications, puis cliquez sur l'application Firebase souhaitée pour trouver son ID d'application.
PATH/TO/symbols
: même répertoire que celui que vous transmettez à l'indicateur--split-debug-info
lors de la compilation de l'application
Si le problème persiste, consultez le guide Android spécifique au dépannage des rapports obscurcis.