Introduction
Vous trouverez ci-dessous un guide de débogage du processus de compilation et de build pour les jeux Unity utilisant le SDK Firebase pour Unity. Il explique comment examiner et résoudre un grand nombre des problèmes les plus courants que vous pouvez rencontrer lors de la configuration et de la compilation de votre jeu pour une nouvelle plate-forme ou après une mise à jour. Elles sont classées dans l'ordre dans lequel elles peuvent se produire au cours du processus. Consultez-les dans l'ordre et passez à l'étape suivante une fois que la précédente est résolue.
En plus de ce document, consultez les questions fréquentes sur Firebase pour Unity pour en savoir plus.
Problèmes de compilation en mode Lecture
La première catégorie de problèmes de compilation peut se produire lors des tests dans l'éditeur, avant que vous ne tentiez de lancer une compilation mobile. Cette section concerne toutes les erreurs Firebase qui se produisent avant et pendant le mode Play.
Lorsque Unity démarre ou détecte des modifications apportées aux dépendances, au code ou à d'autres éléments, il tente de recompiler le projet. Si le projet ne peut pas être compilé à ce moment-là, l'éditeur consigne les erreurs de compilation dans la console. Si vous essayez d'accéder au mode Lecture, un pop-up d'erreur s'affiche dans l'onglet Scene (Scène) d'Unity avec le message All compiler errors have to be fixed before you can enter playmode!.
Déboguer les problèmes de compilation liés à Firebase
Types, classes, méthodes et membres manquants
De nombreux problèmes Firebase sont dus à l'incapacité de l'éditeur et du compilateur à trouver les types, classes, méthodes et membres nécessaires. Les symptômes courants de ce problème sont des variantes des éléments suivants :
The type or namespace name ‘<CLASS OR NAMESPACE NAME>' could not be found. Are you missing a using directive or an assembly reference?
The type or namespace name <TYPE OR NAMESPACE NAME> does not exist in the namespace ‘Firebase<.OPTIONAL NESTED NAMESPACE NAME PATH>' (are you missing an assembly reference?)
‘<CLASS NAME>' does not contain a definition for ‘<MEMBER VARIABLE OR METHOD NAME>'
Procédure de résolution :
Lorsque vous utilisez des classes ou des méthodes Firebase dans le code, assurez-vous de les rendre disponibles en utilisant les directives
usingappropriées pour les produits Firebase spécifiques dont vous avez besoin.Vérifiez que vous avez importé les packages Firebase appropriés :
- Pour importer les packages appropriés, procédez de l'une des manières suivantes :
- Ajoutez le SDK Unity Firebase en tant que
.unitypackageou - Examinez et appliquez l'une des alternatives décrites dans Autres options d'installation d'Unity.
- Ajoutez le SDK Unity Firebase en tant que
- Assurez-vous que chaque produit Firebase de votre projet et EDM4U :
- Sont à la même version
- ont été installés en tant que
.unitypackageexclusivement OU exclusivement via Unity Package Manager.
- Pour importer les packages appropriés, procédez de l'une des manières suivantes :
Si vous avez importé le SDK Unity Firebase avant la version 10.0.0 en tant que
.unitypackage, l'archive ZIP du SDK Unity Firebase contient des packages pour la compatibilité avec .NET 3.x et .NET 4.x. Assurez-vous de n'avoir inclus que le niveau de .NET Framework compatible dans votre projet :- La compatibilité entre les versions de l'éditeur Unity et les niveaux de framework .NET est abordée dans Ajouter Firebase à votre projet Unity.
- Si vous avez accidentellement importé vos packages Firebase au mauvais niveau de .NET Framework ou si vous devez passer de l'utilisation de
.unitypackageà l'une des options d'installation Unity supplémentaires, la méthode la plus propre consiste à supprimer tous les packages Firebase en suivant les méthodes mentionnées dans cette section sur la migration, puis à réimporter tous les packages Firebase.
Vérifiez que votre éditeur recrée votre projet et que vos tentatives de lecture reflètent l'état le plus récent de votre projet :
- Par défaut, l'éditeur Unity est configuré pour recompiler chaque fois que des modifications d'éléments ou de configuration sont détectées.
- Il est possible que cette fonctionnalité ait été désactivée et que l'éditeur Unity soit configuré pour une actualisation/recompilation manuelle. Examinez ce point et essayez d'effectuer une actualisation manuelle si nécessaire.
Erreurs d'exécution en mode Lecture
Si votre jeu démarre, mais rencontre des problèmes avec Firebase pendant son exécution, essayez les solutions suivantes :
Assurez-vous d'approuver les bundles Firebase dans "Sécurité et confidentialité" sur macOS.
Si, au démarrage de votre jeu dans l'éditeur sur macOS, une boîte de dialogue s'affiche avec le message "FirebaseCppApp-<version>.bundle ne peut pas être ouvert, car le développeur ne peut pas être validé", vous devez approuver ce fichier bundle spécifique dans le menu "Sécurité et confidentialité" de Mac.
Pour ce faire, cliquez sur l'icône Apple > Préférences Système > Sécurité et confidentialité.
Dans le menu de sécurité, à peu près au milieu de la page, une section indique que l'utilisation de "FirebaseCppApp-<version>.bundle" a été bloquée, car il ne provient pas d'un développeur identifié.
Cliquez sur le bouton Autoriser quand même.

Revenez à Unity et appuyez à nouveau sur Play (Lire).
Un avertissement semblable au premier s'affiche alors :

Appuyez sur Ouvrir pour que votre programme puisse continuer. Vous ne serez plus interrogé sur ce fichier spécifique.
Assurez-vous que votre projet contient et utilise des fichiers de configuration valides
- Assurez-vous que vos paramètres de compilation sont définis pour la cible souhaitée (iOS ou Android) dans File > Build Settings (Fichier > Paramètres de compilation). Pour en savoir plus, consultez la documentation sur les paramètres de compilation Unity.
- Téléchargez le fichier de configuration de votre application (
google-services.jsonpour Android ouGoogleService-Info.plistpour iOS) et de votre cible de compilation depuis la console Firebase dans Paramètres du projet > Vos applications : Si vous disposez déjà de ces fichiers, supprimez-les de votre projet et remplacez-les par la version la plus récente. Assurez-vous que leur nom est orthographié exactement comme indiqué ci-dessus, sans "(1)" ni d'autres chiffres. - Si la console contient un message concernant des fichiers dans
Assets/StreamingAssets/, assurez-vous qu'aucun message de la console n'indique qu'Unity n'a pas pu modifier les fichiers à cet emplacement. - Assurez-vous que
Assets/StreamingAssets/google-services-desktop.jsonest généré et correspond au fichier de configuration téléchargé.- S'il n'est pas généré automatiquement et que
StreamingAssets/n'existe pas, créez manuellement le répertoire dans le répertoireAssets. - Vérifiez si Unity a généré
google-services-desktop.json.
- S'il n'est pas généré automatiquement et que
Assurez-vous que chaque produit Firebase et EDM4U ont été installés exclusivement via .unitypackage ou Unity Package Manager.
- Vérifiez à la fois le dossier
Assets/et Unity Package Manager pour vous assurer que les SDK Firebase et EDM4U ont été installés exclusivement via l'une ou l'autre méthode. - Certains plug-ins développés par Google, tels que Google Play, et des plug-ins tiers peuvent dépendre d'EDM4U. Ces plug-ins peuvent inclure EDM4U dans leurs packages
.unitypackageou Unity Package Manager (UPM). Assurez-vous qu'il n'y a qu'une seule copie d'EDM4U dans votre projet. Si des packages UPM dépendent d'EDM4U, il est préférable de ne conserver que les versions UPM d'EDM4U, disponibles sur la page d'archive des Google APIs pour Unity.
Assurez-vous que tous les produits Firebase de votre projet sont de la même version.
- Si les SDK Firebase ont été installés via
.unitypackage, vérifiez si toutes les bibliothèquesFirebaseCppAppsousAssets/Firebase/Plugins/x86_64/sont de la même version. - Si les SDK Firebase ont été installés via Unity Package Manager (UPM), ouvrez Windows > Package Manager, recherchez "Firebase" et assurez-vous que tous les packages Firebase sont de la même version.
- Si votre projet contient différentes versions des SDK Firebase, nous vous recommandons de supprimer complètement tous les SDK Firebase avant de les réinstaller, cette fois avec les mêmes versions. La méthode la plus propre consiste à supprimer tous les packages Firebase en suivant les méthodes mentionnées dans cette section sur la migration.
Erreurs de compilation du résolveur et de l'appareil cible
Si votre jeu fonctionne dans l'éditeur (configuré pour la cible de compilation appropriée de votre choix), vérifiez ensuite que le Gestionnaire de dépendances externes pour Unity (EDM4U) est correctement configuré et fonctionne.
Le dépôt GitHub EDM4U contient un guide par étapes pour cette partie du processus, que vous devez examiner et suivre avant de continuer.
Problèmes liés à "Single Dex" et minimisation (obligatoire si vous utilisez Cloud Firestore)
Lors de la compilation d'une application Android, vous pouvez rencontrer un échec de compilation lié à la présence d'un seul fichier dex. Le message d'erreur ressemble à ceci (si votre projet est configuré pour utiliser le système de compilation Gradle) :
Cannot fit requested classes in a single dex file.
Les fichiers .dex permettent de stocker un ensemble de définitions de classe et les données associées pour les applications Android. Un seul fichier dex est limité à 65 536 méthodes. Les compilations échoueront si le nombre total de méthodes de toutes les bibliothèques Android de votre projet dépasse cette limite.
Les deux étapes suivantes peuvent être appliquées de manière séquentielle. N'activez multidex que si la minimisation ne résout pas le problème.
Activer la minimisation
Unity a introduit la minimisation en 2017.2 pour supprimer le code inutilisé, ce qui peut réduire le nombre total de méthodes référencées dans un seul fichier dex. * Cette option est disponible dans Player Settings > Android > Publishing Settings > Minify (Paramètres du lecteur > Android > Paramètres de publication > Minimiser). * Les options peuvent varier selon les versions d'Unity. Reportez-vous à la documentation Unity officielle.
Activer Multidex
Si, après avoir activé la minimisation, le nombre de méthodes référencées dépasse toujours la limite, vous pouvez activer multidex. Il existe plusieurs façons de procéder dans Unity :
- Si l'option Custom Gradle Template (Modèle Gradle personnalisé) est activée sous Player Settings (Paramètres du lecteur), modifiez
mainTemplate.gradle. - Si vous utilisez Android Studio pour compiler le projet exporté, modifiez le fichier build.gradle au niveau du module.
Pour en savoir plus, consultez le guide de l'utilisateur multidex.
Comprendre et corriger les erreurs d'exécution de l'appareil cible
Si votre jeu fonctionne dans l'éditeur et peut être compilé et installé sur votre appareil cible, mais que vous rencontrez des erreurs d'exécution, inspectez et examinez les journaux générés sur l'appareil.
Cette section explique comment examiner vos journaux pour détecter d'éventuelles erreurs, et l'une de ces erreurs ne se produit qu'au moment de l'exécution sur l'appareil ou le simulateur.
Android
Simulateur
- Inspectez les journaux affichés dans la console de l'émulateur ou affichez la fenêtre Logcat.
Appareil
Familiarisez-vous avec adb et adb logcat, et découvrez comment les utiliser.
- Bien que vous puissiez utiliser les différents outils de votre environnement de ligne de commande pour filtrer la sortie, vous pouvez également examiner les options de logcat.
Un moyen simple de démarrer une session ADB à partir de zéro est le suivant :
adb logcat -c && adb logcat <OPTIONS>où
OPTIONScorrespond aux options que vous transmettez à la ligne de commande pour filtrer la sortie.
Utiliser Logcat via Android Studio
Lorsque vous utilisez Logcat via Android Studio, des outils de recherche supplémentaires sont disponibles pour faciliter la génération de recherches productives.
iOS
Inspecter les journaux
Si vous utilisez un appareil physique, connectez-le à votre ordinateur. Inspectez lldb dans Xcode.
Problèmes liés à Swift
Si vous rencontrez des journaux d'erreurs mentionnant Swift, consultez la section External Dependency Manager for Unity.
Étapes suivantes
Si votre jeu rencontre toujours des problèmes de compilation, de build ou d'exécution liés à Firebase, consultez la page des problèmes du SDK Firebase pour Unity et envisagez de signaler un nouveau problème. Consultez également la page d'assistance de Firebase pour découvrir d'autres options.