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

Introduction

Vous trouverez ci-dessous un guide de débogage du processus de compilation et de création 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. Il est organisé dans l'ordre où ces erreurs peuvent se produire dans le 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 classe de problèmes de compilation peut se produire lors des tests dans l'éditeur avant d'essayer 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 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 de passer en mode "Play" (Lecture), un message d'erreur s'affiche dans l'onglet Scene (Scène) d'Unity avec le code All compiler errors have to be fixed before you can enter playmode!.

Types, classes, méthodes et membres manquants

De nombreux problèmes Firebase surviennent lorsque l'éditeur et le compilateur ne parviennent pas à trouver les types, classes, méthodes et membres nécessaires. Les symptômes courants sont des variantes des 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. 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.

    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 :
      1. Ajoutez le SDK Unity Firebase en tant que .unitypackage ou
      2. Consultez Options d'installation supplémentaires d'Unity et effectuez l'une des solutions proposées.
    2. Assurez-vous que chaque produit Firebase de votre projet et EDM4U :
      • utilisent la même version ;
      • ont été installés en tant que .unitypackage exclusivement OU exclusivement via le gestionnaire de paquets Unity.
  3. 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 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 frameworks .NET 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 de migration, puis à réimporter tous les packages Firebase.
  4. 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:

    1. 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.
    2. Il est possible que cette fonctionnalité ait été désactivée et que l'éditeur Unity soit défini sur Actualisation/Recompilation manuelle. 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 rencontre des problèmes avec Firebase pendant son exécution, essayez ce qui suit:

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.

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 interrogé à ce sujet.

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

  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 à partir de la console Firebase, dans Project Settings > Your Apps (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, en veillant à ce qu'ils soient orthographiés exactement comme indiqué ci-dessus, sans "(1)" ni autre chiffre associé aux noms de fichier.
  3. Si la console contient un message concernant les fichiers dans Assets/StreamingAssets/, assurez-vous qu'aucun message ne signale qu'Unity n'a pas pu modifier les fichiers.
  4. 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épertoire Assets.
    • Vérifiez si Unity a généré google-services-desktop.json.

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

  1. Vérifiez le dossier Assets/ et le gestionnaire de paquets Unity pour vous assurer que les SDK Firebase et EDM4U ont été installés via l'une ou l'autre méthode exclusivement.
  2. 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 .unitypackages ou 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, disponibles 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.

  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 de la même version.
  2. Si les SDK Firebase ont été installés via le gestionnaire de paquets Unity (UPM), ouvrez Windows > Package Manager (Gestionnaire de paquets), recherchez "Firebase" et assurez-vous que tous les paquets Firebase sont de la même version.
  3. 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. Le moyen le plus simple consiste à supprimer tous les packages Firebase à l'aide des méthodes mentionnées dans cette section de 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 que vous devez consulter et suivre avant de continuer.

Problèmes liés à "Single Dex" et minification (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 é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 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. * Cette option se trouve dans Paramètres du lecteur > Android > Paramètres de publication > Minification. * 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 minification, le nombre de méthodes référencées dépasse toujours la limite, vous pouvez également activer multidex. Pour ce faire, plusieurs méthodes s'offrent à vous 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 sur l'appareil cible

Si votre jeu fonctionne dans l'éditeur, peut être compilé pour votre appareil cible et installé dessus, 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 d'éventuelles erreurs dans vos journaux, y compris une erreur qui ne se produit qu'au moment de l'exécution sur l'appareil ou le simulateur.

Android

Simulateur

  • Examinez 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 consulter les options de Logcat.
  • Pour démarrer une session ADB avec une table rase, procédez comme suit:

    adb logcat -c && adb logcat <OPTIONS>
    

    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, associez-le à votre ordinateur. Inspectez lldb dans Xcode.

Problèmes liés à Swift

Si vous rencontrez des journaux d'erreur mentionnant Swift, consultez la section Gestionnaire de dépendances externe pour Unity à ce sujet.

Étapes suivantes

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 Firebase pour découvrir d'autres options.