Introduction
Ce guide vous explique comment déboguer le processus de compilation et de compilation des jeux Unity à l'aide du SDK Firebase pour Unity. Il explique comment examiner et résoudre bon 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 selon lequel ces erreurs peuvent se produire au cours du processus. Consultez-les dans l'ordre et passez à l'étape suivante une fois que vous avez résolu chaque problème.
En plus de ce document, consultez les questions fréquentes sur Firebase pour Unity pour en savoir plus.
Problèmes de compilation en mode Play
La première catégorie de problèmes de compilation peut survenir lorsque vous effectuez des tests dans l'éditeur avant de commencer 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 consignera les erreurs de compilation dans la console. Si vous tentez de passer en mode Lecture, un pop-up d'erreur indiquant All compiler errors have to be fixed before you can enter playmode!
s'affichera dans l'onglet Scene (Scène) d'Unity.
Déboguer les problèmes de compilation liés à Firebase
Types, classes, méthodes et membres manquants
De nombreux problèmes Firebase surviennent lorsque l'éditeur et le compilateur ne peuvent pas trouver les types, classes, méthodes et membres nécessaires. Les symptômes courants sont les 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 disposant des directives
using
appropriées pour les produits Firebase spécifiques requis.Vérifiez que vous avez importé les packages Firebase appropriés :
- Pour importer les packages appropriés :
- Ajoutez le SDK Unity Firebase en tant que
.unitypackage
ou - Examinez et exécutez l'une des alternatives dans Options d'installation Unity supplémentaires.
- Ajoutez le SDK Unity Firebase en tant que
- Assurez-vous que chaque produit Firebase de votre projet et EDM4U:
- ont la même version ;
- ont été installés exclusivement en tant que
.unitypackage
s OU exclusivement via le gestionnaire de packages Unity ;
- Pour importer les packages appropriés :
Si vous avez importé le SDK Unity Firebase avant la version 10.0.0 sous forme de
.unitypackage
, l'archive ZIP du SDK Unity Firebase contient des packages pour la compatibilité avec .NET 3.x et .NET 4.x. Assurez-vous d'avoir uniquement inclus le niveau compatible de .NET Framework dans votre projet:- La compatibilité entre les versions de l'éditeur Unity et les niveaux de frameworks .NET est abordée dans Ajouter Firebase à votre projet Unity.
- Si vous avez accidentellement importé vos packages Firebase au mauvais niveau du framework .NET ou si vous devez passer de
.unitypackage
à l'une des options d'installation Unity supplémentaires, la méthode la plus simple consiste à supprimer tous les packages Firebase à l'aide des méthodes mentionnées dans cette section sur la migration, puis à réimporter tous les packages Firebase.
Vérifiez que votre éditeur recompile 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 reconstruire l'application 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 défini sur manual refresh/recompile. Vérifiez cela et essayez d'effectuer une actualisation manuelle si c'est le cas.
Erreurs d'exécution du mode Play
Si votre jeu démarre, mais que vous rencontrez des problèmes avec Firebase pendant l'exécution, essayez les solutions suivantes:
Assurez-vous d'approuver les bundles Firebase dans "Sécurité et confidentialité" sur Mac OS.
Si, lorsque vous démarrez votre jeu dans l'éditeur sur Mac OS, 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 de 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 "Sécurité", environ à mi-chemin de la page, une section indique que ""FirebaseCppApp-<version>.bundle" a été bloqué, car il ne provient pas d'un développeur identifié."
Cliquez sur le bouton Autoriser quand même.
Retournez dans Unity, puis appuyez de nouveau sur Play (Lecture).
Un avertissement semblable au premier s'affiche alors:
Appuyez sur Open (Ouvrir) pour que le programme puisse continuer. vous ne serez plus demandé(e) sur ce fichier.
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 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.json
pour Android ouGoogleService-Info.plist
pour iOS) et la cible de compilation depuis la console Firebase, dans Paramètres du projet > Vos applications: Si vous disposez déjà de ces fichiers, supprimez-les dans votre projet et remplacez-les par la version la plus récente, en veillant à ce qu'ils s'écrivent exactement comme indiqué ci-dessus, sans "(1)". ou d’autres chiffres joints aux noms de fichiers. - Si la console contient un message concernant des fichiers dans
Assets/StreamingAssets/
, assurez-vous qu'aucun message de console n'indique que Unity n'a pas pu modifier de fichiers. - Assurez-vous que
Assets/StreamingAssets/google-services-desktop.json
est généré et qu'il correspond au fichier de configuration téléchargé.- Si elle n'est pas générée 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
.
- Si elle n'est pas générée automatiquement et que
Assurez-vous que chaque produit Firebase et EDM4U a été installé exclusivement via .unitypackage
ou le gestionnaire de paquets Unity.
- Vérifiez le dossier
Assets/
et le gestionnaire de packages Unity 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 fichiers
.unitypackage
ou 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, que vous trouverez sur la page d'archive des API Google pour Unity.
Assurez-vous que tous les produits Firebase de votre projet utilisent la même version.
- Si les SDK Firebase ont été installés via
.unitypackage
, vérifiez si toutes les bibliothèquesFirebaseCppApp
sousAssets/Firebase/Plugins/x86_64/
sont de la même version. - Si les SDK Firebase ont été installés via le gestionnaire de packages Unity (UPM), ouvrez Windows > Gestionnaire de packages, recherchez "Firebase". et vérifier que tous les packages Firebase utilisent la même version.
- Si votre projet contient différentes versions de 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 appropriée consiste à supprimer tous les packages Firebase à l'aide des méthodes mentionnées dans cette section sur la migration.
Résoudre les erreurs de compilation 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 consulter et suivre avant de continuer.
Problèmes liés à "Single Dex" et minification (obligatoire si vous utilisez Cloud Firestore)
Lorsque vous compilez une application Android, vous pouvez rencontrer un échec de compilation lié à l'utilisation 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
servent à 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 échouent 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 la multidextérité que si la minification ne permet pas de résoudre le problème.
Activer la minification
Unity a lancé la minification en 2017.2 pour éliminer 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 se trouve dans Player Settings > Android > Paramètres de publication > Réduire la taille : * Les options peuvent varier selon les versions d'Unity. Reportez-vous donc à la documentation officielle d'Unity.
Activer Multidex
Si, après avoir activé la minimisation, le nombre de méthodes référencées dépasse encore la limite, une autre option consiste à activer multidex
. Pour ce faire, plusieurs méthodes s'offrent à vous dans Unity :
- Si l'option Custom Gradle Template (Modèle Gradle personnalisé) est activée sous Player Settings (Paramètres du joueur), 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 créé et installé pour 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 rechercher dans vos journaux d'éventuelles erreurs. 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, ainsi que leur utilisation.
- 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.
Voici un moyen simple de démarrer une session ADB sur un écran blanc:
adb logcat -c && adb logcat <OPTIONS>
où
OPTIONS
correspond aux indicateurs que vous transmettez à la ligne de commande pour filtrer la sortie.
Utiliser Logcat via Android Studio
Lorsque vous utilisez Logcat via Android Studio, d'autres outils de recherche 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 (Gestionnaire de dépendances externes pour Unity).
Autres étapes
Si votre jeu rencontre toujours des problèmes de compilation, de compilation ou d'exécution liés à Firebase, consultez la page des problèmes liés au 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.