Déboguer le processus de compilation, d'installation et d'exécution du jeu

Introduction

Ce guide explique comment déboguer le processus de compilation et de compilation pour les jeux Unity à l'aide du SDK Firebase pour Unity. Il explique comment examiner et résoudre la plupart des problèmes 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 par ordre d'apparition dans le processus. Consultez-les dans l'ordre et passez à la suivante une fois que vous avez résolu la précédente.

En plus de ce document, consultez les questions fréquentes sur Firebase pour Unity pour en savoir plus.

Problèmes de compilation du mode Lecture

La première catégorie de problèmes de compilation peut survenir lors des tests dans l'éditeur avant que vous n'essayiez de démarrer 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 reconstruire le projet. Si le projet ne peut pas être compilé à ce moment-là, l'éditeur enregistre les erreurs de compilation dans la console. Si vous tentez de passer en mode Lecture, un pop-up d'erreur s'affiche dans l'onglet Scène d'Unity, indiquant All compiler errors have to be fixed before you can enter playmode!.

Types, classes, méthodes et membres manquants

De nombreux problèmes Firebase se produisent lorsque l'éditeur et le compilateur ne parviennent pas à trouver les types, classes, méthodes et membres nécessaires. Les symptômes courants sont les 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 :
  1. Si vous utilisez des classes ou des méthodes Firebase dans votre code, assurez-vous de les rendre disponibles en utilisant les directives using appropriées pour les produits Firebase spécifiques dont vous avez besoin.

    1. Exemples tirés de MechaHamster : Passez au niveau supérieur avec Firebase :
      1. using Firebase.RemoteConfig;
      2. using Firebase.Crashlytics;
  2. Vérifiez que vous avez importé les packages Firebase appropriés :

    1. Pour importer les packages appropriés, procédez comme suit :
      1. Ajoutez le SDK Unity Firebase en tant que .unitypackage.
      2. Examinez et effectuez l'une des alternatives dans Options d'installation Unity supplémentaires.
    2. Assurez-vous que chaque produit Firebase de votre projet et EDM4U :
      • sont à la même version.
      • ont été installés exclusivement en tant que .unitypackage OU exclusivement via le gestionnaire de packages Unity.
  3. Si vous avez importé le SDK Unity Firebase avant la version 10.0.0 en tant que .unitypackages, l'archive ZIP du SDK Unity Firebase contient des packages compatibles avec .NET 3.x et .NET 4.x. Assurez-vous d'avoir inclus uniquement le niveau .NET Framework compatible dans votre projet :

    1. La compatibilité entre les versions de l'éditeur Unity et les niveaux de .NET Framework est abordée dans Ajouter Firebase à votre projet Unity.
    2. Si vous avez importé accidentellement vos packages Firebase au mauvais niveau .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 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.
  4. Vérifiez que votre éditeur est en train de recréer votre projet et que vos tentatives de lecture reflètent l'état le plus récent de votre projet :

    1. Par défaut, l'éditeur Unity est configuré pour reconstruire chaque fois que des modifications sont détectées au niveau des ressources ou de la configuration.
    2. Il est possible que cette fonctionnalité ait été désactivée et que l'éditeur Unity soit défini sur actualisation/recompilation manuelle. Examinez ce problème et essayez une actualisation manuelle si c'est le cas.

Erreurs d'exécution du mode Lecture

Si votre jeu démarre, mais rencontre des problèmes avec Firebase lors de son exécution, essayez ce qui suit :

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 Mac OS, un message s'affiche et indique "Impossible d'ouvrir FirebaseCppApp-<version>.bundle, car le développeur ne peut pas être vérifié", 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é, à mi-chemin sur la page, une section indique "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.

c35166e224cce720.png

Revenez à Unity et appuyez à nouveau sur Play (Lecture).

Un avertissement semblable au premier s'affiche alors :

5ad9ddb0d3a52892.png

Appuyez sur Ouvrir pour que votre programme puisse continuer. Vous ne serez plus invité à répondre à cette question pour ce fichier.

Assurez-vous que votre projet contient des fichiers de configuration valides et qu'il les utilise.

  1. 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.
  2. Téléchargez le fichier de configuration de votre application (google-services.json pour Android ou GoogleService-Info.plist pour iOS) et la cible de compilation depuis la console Firebase, dans Paramètres du projet > Vos applications : Si vous possédez déjà ces fichiers, supprimez-les de votre projet et remplacez-les par la version la plus récente. Assurez-vous qu'ils sont orthographiés exactement comme indiqué ci-dessus, sans "(1)" ni aucun autre chiffre ajouté aux noms de fichiers.
  3. Si la console contient un message concernant les fichiers dans Assets/StreamingAssets/, assurez-vous qu'aucun message n'indique que Unity n'a pas pu modifier les fichiers à cet emplacement.
  4. Assurez-vous que Assets/StreamingAssets/google-services-desktop.json est 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épertoire Assets.
    • Vérifiez si Unity a généré google-services-desktop.json.

Assurez-vous que chaque produit Firebase et EDM4U ont été installés exclusivement via .unitypackage ou le gestionnaire de packages Unity.

  1. 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 par l'une ou l'autre méthode.
  2. Certains plug-ins développés par Google, comme Google Play, et des plug-ins tiers peuvent dépendre d'EDM4U. Ces plug-ins peuvent inclure EDM4U dans leurs .unitypackages ou leurs packages 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 Archive des API Google pour Unity.

Assurez-vous que tous les produits Firebase de votre projet sont à la même version.

  1. Si les SDK Firebase ont été installés via .unitypackage, vérifiez si toutes les bibliothèques FirebaseCppApp sous Assets/Firebase/Plugins/x86_64/ sont à la même version.
  2. 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 à la même version.
  3. 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 à l'aide des 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 détaillé pour cette partie du processus. Nous vous recommandons de le consulter et de le suivre avant de continuer.

Problèmes liés au fichier Dex unique et à la minification (obligatoire si vous utilisez Cloud Firestore)

Lorsque vous créez 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 sont utilisés pour stocker un ensemble de définitions de classe et leurs données complémentaires associées pour les applications Android. Un fichier dex unique est limité à 65 536 méthodes de référence. 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 minification ne résout pas le problème.

Activer la minification

Unity a introduit la minification dans la version 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 se trouve dans Player Settings > Android > Publishing Settings > Minify (Paramètres du lecteur > Android > Paramètres de publication > Réduire). * Les options peuvent varier selon les versions d'Unity. Consultez la documentation officielle d'Unity.

Activer Multidex

Si, après avoir activé la minification, le nombre de méthodes référencées dépasse toujours la limite, vous pouvez activer multidex. Il existe plusieurs façons d'y parvenir dans Unity :

  • Si l'option Modèle Gradle personnalisé sous Paramètres du lecteur est activée, 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 des appareils cibles

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, y compris une erreur qui 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 votre émulateur ou affichez la fenêtre Logcat.

Appareil

Familiarisez-vous avec adb et adb logcat, et apprenez à 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 consulter les options de logcat.
  • Pour démarrer une session ADB avec une table rase, vous pouvez simplement exécuter la commande suivante :

    adb logcat -c && adb logcat <OPTIONS>

    OPTIONS correspond aux indicateurs que vous transmettez à la ligne de commande pour filtrer le résultat.

Utiliser Logcat via Android Studio

Lorsque vous utilisez Logcat via Android Studio, d'autres outils de recherche sont disponibles pour simplifier la génération de recherches productives.

iOS

Inspecter les journaux

Si vous exécutez un appareil physique, connectez-le à votre ordinateur. Inspectez lldb dans Xcode.

Problèmes Swift

Si vous rencontrez des journaux d'erreurs mentionnant Swift, consultez la section External Dependency Manager pour Unity à ce sujet.

Étapes suivantes

Si votre jeu présente toujours des problèmes de compilation, de compilation 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. Pour en savoir plus sur les autres options, consultez la page d'assistance de Firebase.