Débogage du processus de création, d'installation et d'exécution du jeu

Introduction

Ce qui suit est un guide pour déboguer le processus de compilation et de construction des jeux Unity à l'aide du SDK Firebase pour Unity. Il décrit comment enquêter et résoudre bon nombre des problèmes les plus courants que vous pouvez rencontrer lors de la configuration et de la création de votre jeu pour une nouvelle plate-forme ou après une mise à jour. Il est classé dans l'ordre dans lequel ces erreurs peuvent survenir au cours du processus. Consultez-les dans l’ordre et procédez au fur et à mesure que chacun est résolu.

En plus de ce document, consultez la FAQ Firebase pour Unity pour plus d'informations.

Problèmes de compilation du mode Lecture

La première classe de problèmes de build peut survenir lors des tests dans l’éditeur avant d’essayer de démarrer une build mobile. Cette section concerne toutes les erreurs Firebase qui se produisent avant et pendant le mode Lecture.

Lorsque Unity démarre ou détecte des modifications apportées aux dépendances, au code ou à d'autres actifs, il tente de reconstruire le projet. Si le projet ne parvient pas à se compiler à ce moment-là, l'éditeur enregistrera les erreurs de compilation sur la console et si vous essayez d'entrer en mode Lecture, vous recevrez une fenêtre contextuelle d'erreur dans l'onglet Scène de Unity 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 en raison de l'incapacité de l'éditeur et du compilateur à trouver les types, classes, méthodes et membres nécessaires. Les symptômes courants en 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>'

Étapes de résolution :
  1. Lorsque vous utilisez des classes ou des méthodes Firebase dans le code, assurez-vous de les rendre disponibles en disposant des directives using correctes pour les produits Firebase particuliers nécessaires.

    1. Exemples de MechaHamster : passez au niveau supérieur avec Firebase Edition :
      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 :
      1. Ajoutez le SDK Firebase Unity en tant que .unitypackage s ou
      2. Examinez et exécutez l’une des alternatives dans les options d’installation supplémentaires d’Unity .
    2. Assurez-vous que chaque produit Firebase de votre projet et EDM4U :
      • Sont dans la même version
      • ont été installés soit en tant que .unitypackage exclusivement OU exclusivement via Unity Package Manager.
  3. Si vous avez importé le SDK Firebase Unity avant la version « 10.0.0 » en tant que .unitypackage s, l'archive zip du SDK Firebase Unity contient des packages pour la prise en charge de .NET 3.x et de .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 Frameworks est abordée dans Ajouter Firebase à votre projet Unity .
    2. Si vous avez accidentellement importé vos packages Firebase au mauvais niveau .NET Framework ou si vous devez passer de l'utilisation de .unitypackage à l'une des options d'installation supplémentaires d'Unity , le moyen le plus propre consiste à supprimer chaque package Firebase via les méthodes mentionnées dans cette section de migration et puis réimportez à nouveau tous les packages Firebase.
  4. Vérifiez que votre éditeur est en train de reconstruire votre projet et que vos tentatives de lecture reflètent l'état le plus actuel de votre projet :

    1. Par défaut, l'éditeur Unity est configuré pour se reconstruire chaque fois que des modifications d'actifs ou de configuration sont détectées.
    2. Il est possible que cette fonctionnalité ait été désactivée et que l'éditeur Unity soit configuré en actualisation/recompilation manuelle . Examinez cela et essayez une actualisation manuelle si tel 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 Mac OS

Si, au démarrage de votre jeu dans l'éditeur sous Mac OS, une boîte de dialogue indiquant : "FirebaseCppApp-<version>.bundle ne peut pas être ouvert car le développeur ne peut pas être vérifié.", vous devez approuver ce fichier de bundle spécifique dans 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, il y a une section qui dit "" FirebaseCppApp-<version>.bundle "a été bloqué car son utilisation ne provient pas d'un développeur identifié."

Cliquez sur le bouton intitulé Autoriser quand même .

c35166e224cce720.png

Revenez à Unity et appuyez à nouveau sur Play .

Vous verrez alors un avertissement similaire au premier :

5ad9ddb0d3a52892.png

Appuyez sur Ouvrir et votre programme pourra continuer ; vous ne serez plus interrogé sur ce fichier particulier.

Assurez-vous que votre projet contient et utilise des fichiers de configuration valides

  1. Assurez-vous que vos paramètres de build sont définis pour la cible souhaitée (iOS ou Android) dans File > Build Settings . Pour une discussion plus complète, lisez la documentation sur les paramètres de Unity Build .
  2. Téléchargez le fichier de configuration de votre application ( google-services.json pour Android ou GoogleService-Info.plist pour iOS) et créez la cible 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 vous assurant qu'ils sont orthographiés exactement comme indiqué ci-dessus, sans "(1)" ou autres chiffres attachés aux noms de fichiers.
  3. Si la console contient un message concernant les fichiers dans Assets/StreamingAssets/ , assurez-vous qu'il n'y a aucun message de console indiquant que Unity n'a pas pu y modifier les fichiers.
  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 StreamingAssets/ n'existe pas, créez manuellement le répertoire dans le répertoire Assets .
    • Vérifiez si Unity a maintenant généré google-services-desktop.json .

Assurez-vous que chaque produit Firebase et EDM4U ont été installés exclusivement via .unitypackage ou Unity Package Manager.

  1. 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.
  2. Certains plugins développés par Google , tels que Google Play, et des plugins tiers peuvent dépendre d'EDM4U. Ces plugins peuvent inclure EDM4U dans leurs packages .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 conserver uniquement les versions UPM d'EDM4U, disponibles sur la page API Google pour Unity Archive .

Assurez-vous que tous les produits Firebase de votre projet ont 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/ ont 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 ont la même version.
  3. Si votre projet contient différentes versions des SDK Firebase, nous vous recommandons de supprimer entièrement tous les SDK Firebase avant de réinstaller tous les SDK Firebase, cette fois avec les mêmes versions. Le moyen le plus propre consiste à supprimer chaque package Firebase via les méthodes mentionnées dans cette section sur la migration .

Erreurs de construction du résolveur et du périphérique cible

Si votre jeu fonctionne dans l'éditeur (configuré pour la cible de build appropriée de votre choix), vérifiez ensuite que le gestionnaire de dépendances externe pour Unity (EDM4U) est correctement configuré et fonctionne.

Le référentiel EDM4U GitHub contient un guide étape par étape pour cette partie du processus que vous devez consulter et suivre avant de continuer.

Problèmes et minification « Single Dex » ( obligatoire si vous utilisez Cloud Firestore)

Lors de la création d'une application Android, vous pouvez rencontrer un échec de construction lié à la présence d'un seul fichier dex. Le message d'erreur ressemble à ce qui suit (si votre projet est configuré pour utiliser le système de build Gradle) :

Cannot fit requested classes in a single dex file.

Les fichiers .dex sont utilisés pour contenir un ensemble de définitions de classe et leurs données complémentaires associées pour les applications Android. Un seul fichier dex est limité à la référence à 65 536 méthodes ; les builds é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 séquentiellement : n'activez le multidex que si la minification ne résout pas le problème.

Activer la minification

Unity a introduit la minification 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. * L'option se trouve dans Paramètres du lecteur > Android > Paramètres de publication > Minify . * Les options peuvent différer selon les différentes versions d'Unity, veuillez donc vous référer à 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, une autre option consiste à activer multidex . Il existe plusieurs façons d’y parvenir dans Unity :

  • Si le modèle Gradle personnalisé sous Paramètres du lecteur est activé, modifiez mainTemplate.gradle .
  • Si vous utilisez Android Studio pour créer le projet exporté, modifiez le fichier build.gradle au niveau du module.

Plus de détails peuvent être trouvés dans le guide de l'utilisateur multidex .

Comprendre et corriger les erreurs d'exécution du périphérique cible

Si votre jeu fonctionne dans l'éditeur et peut être créé et installé sur votre appareil cible, mais que vous rencontrez des erreurs d'exécution, inspectez et étudiez les journaux générés sur l'appareil .

Cette section explique comment rechercher dans vos journaux des erreurs possibles et une erreur de ce type qui se produit uniquement 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 comment les utiliser.

  • Bien que vous puissiez utiliser les différents outils de votre environnement de ligne de commande pour filtrer la sortie, envisagez également d'examiner les options de logcat.
  • Un moyen simple de démarrer une session ADB avec une table rase est :

    adb logcat -c && adb logcat <OPTIONS>
    

    OPTIONS sont les indicateurs 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 simplifier la génération de recherches productives.

IOS

Inspection des journaux

Si vous utilisez un périphérique physique, connectez-le à votre ordinateur. Inspectez lldb dans Xcode.

Problèmes rapides

Si vous rencontrez des journaux d'erreurs mentionnant Swift, consultez la section Gestionnaire de dépendances externes pour Unity à leur sujet.

Prochaines étapes

Si votre jeu présente toujours des problèmes de compilation, de construction ou d'exécution liés à Firebase, consultez la page des problèmes du SDK Firebase pour Unity et envisagez de déposer un nouveau problème. De plus, reportez-vous à la page d'assistance Firebase pour en savoir plus sur les options supplémentaires.