Dépannage et questions fréquentes pour Unity et Firebase

Cette page propose des conseils et des solutions de dépannage pour les problèmes spécifiques à Unity que vous pourriez rencontrer lors de l'utilisation de Firebase.

Vous rencontrez d'autres difficultés ou vous ne trouvez pas votre problème ci-dessous ? N'oubliez pas de vérifier consultez les questions fréquentes sur Firebase pour en savoir plus sur questions fréquentes propres à chaque produit.

Compatibilité .NET avec Unity 2017.x et versions ultérieures

Firebase est compatible avec .NET 4.x en tant qu'option de compilation expérimentale dans Unity 2017 et plus tard. Les plug-ins Firebase utilisent des composants Parse SDK pour fournir Classes .NET 4.x dans les versions antérieures de .NET.

Par conséquent, la version 5.4.0 et les versions ultérieures du SDK Firebase Unity fournissent des plug-ins qui sont compatibles avec .NET 3.x ou .NET 4.x dans dotnet3 et dotnet4. du SDK Unity Firebase.

Si vous importez un plug-in Firebase incompatible avec la version .NET activée dans votre projet, vous verrez des erreurs de compilation provenant de certains types dans le .NET Framework implémentés par le SDK Parse.

Pour résoudre l'erreur de compilation, si vous utilisez .NET 3.x:

  1. Supprimez ou désactivez les DLL suivantes pour toutes les plates-formes:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll
  2. Activez les DLL suivantes pour toutes les plates-formes:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll

Pour résoudre l'erreur de compilation si vous utilisez .NET 4.x :

  1. Supprimez ou désactivez les DLL suivantes pour toutes les plates-formes:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll
  2. Activez les DLL suivantes pour toutes les plates-formes :
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll

Si vous importez un autre plug-in Firebase:

  • Dans votre projet Unity, accédez à Composants > Résolveur des services Play > Gestionnaire de versions > Mettre à jour pour activer les DLL appropriées pour votre projet.

Compilation IL2CPP Unity 2017.1 dans les projets .NET 4.x

Firebase est compatible avec .NET 4.x en tant qu'option de compilation expérimentale dans Unity 2017 et plus tard. Les plug-ins Firebase utilisent des composants du SDK Parse pour fournir certaines classes .NET 4.x dans les versions antérieures de .NET.

Par conséquent, la version 5.4.0 et ultérieure du SDK Unity Firebase fournit des types de transfert de DLL qui transfèrent des types Parse (par exemple, l'implémentation Parse de System.Threading.Tasks.Task) vers .NET Framework. Malheureusement, IL2CPP (un transpileur qui convertit C# en C++) qui est fourni dans Unity 2017.1.x fait ne traite pas correctement les DLL de transfert de type, ce qui entraîne des erreurs de compilation qui comme suit:

Fatal error in Unity CIL Linker Mono.Cecil.ResolutionException: Failed to
resolve System.Threading.Tasks.TaskCompletionSource`1<T>

Il n'existe actuellement aucune solution de contournement pour les erreurs de compilation .NET 4.x IL2CPP dans Unity 2017.1. Vous devez donc passer à Unity 2017.2 ou version ultérieure pour utiliser .NET 4.x dans les projets compilés avec IL2CPP.

Mise en réseau d'Unity 2017.2

Firebase Realtime Database crée des connexions réseau TLS à l'aide du réseau .NET pile. La fonctionnalité TLS est défectueuse dans Unity 2017.2 lorsque vous utilisez .NET 4.6, ce qui entraîne l'échec du plug-in Realtime Database dans les éditeurs et sur ordinateur.

Il n'existe aucune solution de contournement à ce problème. Vous devez donc utiliser une autre version d'Unity, par exemple la version 2017.1 ou 2017.3.

Fichier de configuration Firebase Android manquant dans Unity 2020

Pour prendre en charge les versions d'Unity qui n'ont pas la possibilité de personnaliser le build Gradle, l'éditeur Firebase génère Assets/Plugins/Android/Firebase/res/values/google-services.xml en tant qu'Android ressource à empaqueter dans un build Android, afin que le SDK Firebase puisse utiliser pour initialiser l'instance FirebaseApp par défaut.

Dans Unity 2020, toutes les ressources Android doivent se trouver dans des répertoires avec un Suffixe .androidlib. Si votre projet utilise un SDK Firebase qui génère une Répertoire Assets/Plugins/Android/Firebase et remplacez-le par Assets/Plugins/Android/Firebase.androidlib Assurez-vous qu'elle contient AndroidManifest.xml, project.properties et res/values/google-services.xml

Problème avec un dex unique lors de la création d'une application Android

Lors de la compilation de l'application Android, vous pouvez rencontrer un échec de compilation lié à un seul fichier dex. Le message d'erreur ressemble à celui-ci si votre projet est configuré pour utiliser le système de compilation Gradle.

Cannot fit requested classes in a single dex file.

Les fichiers Dalvik Executable (.dex) permettent de stocker un ensemble de définitions de classe et les données associées pour les applications Android (.apk). Un seul fichier DEX est limité à la référence de 65 536 méthodes. La compilation échouera si le nombre total le nombre de méthodes de l'ensemble des bibliothèques Android de votre projet dépasse cette limite.

Unity a lancé la miniification 2017.2, qui utilise ProGuard (ou d'autres outils dans certaines versions d'Unity) pour supprimer le code inutilisé, ce qui peut réduire le nombre total référencées dans un seul fichier dex. Vous trouverez cette option dans Player Settings > Android > Publishing Settings > Minify (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.

Si le nombre de méthodes référencées dépasse encore la limite, une autre option est pour activer multidex. Il existe plusieurs façons d'y parvenir dans Unity:

  • Si Custom Gradle Template sous Player Settings est activé, modifier 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.

Prise en charge de Java 8 et désucrage pour les builds Android dans Unity 2017 et Unity 2018 (SDK Unity Firebase 8.0.0 et versions ultérieures)

En mai 2021 (BoM Firebase v28.0.0), Firebase a désactivé le désucrage pour toutes ses bibliothèques Android (voir la note de version). Lorsque vous compilez une application Android avec le SDK Unity Firebase (version 8.0.0 ou ultérieure), l'erreur de compilation suivante peut s'afficher:

> Error while dexing.
 The dependency contains Java 8 bytecode. Please enable desugaring by adding the following to build.gradle

Ce changement ne concerne que les builds Android dans Unity 2017 et Unity 2018. Les versions plus récentes d'Unity ajoutent le bloc compileOptions par défaut dans les fichiers de compilation Gradle. Pour résoudre cette erreur de compilation dans Unity 2017 et Unity 2018, effectuez l'une des opérations suivantes :

  • Ajoutez un bloc compileOptions à votre modèle Gradle:

    1. Utilisez Gradle comme système de compilation.
    2. Activez Custom Gradle Template sous Player Settings.
    3. Ajoutez les lignes suivantes à mainTemplate.gradle (ou à build.gradle au niveau du module si vous exportez un projet pour Android Studio):

      android {
          compileOptions {
              sourceCompatibility 1.8
              targetCompatibility 1.8
          }
      }
      
  • Vous pouvez également définir la valeur minSdkVersion de votre projet Android sur 26 ou version ultérieure.

Consultez également Dépannage Android – Désucrage des échecs de compilation.

Problèmes lors de la compilation pour iOS avec CocoaPods

Lors de la compilation pour iOS, l'installation de CocoaPod peut échouer et afficher une erreur concernant le ou le codage UTF-8. Il existe actuellement plusieurs façons pour contourner le problème.

  • Dans le terminal, exécutez directement pod install, puis ouvrez le fichier xcworkspace généré.

  • Revenez à la version 1.10.2 de Cocoapods. Le problème n'existe que dans versions 1.11 et ultérieures.

  • Dans votre fichier ~/.bash_profile ou équivalent, ajoutez export LANG=en_US.UTF-8

Mettre à jour la version des SDK Unity Firebase

Le processus de mise à jour des versions des SDK Unity Firebase dépend de la façon dont ils ont été initialement importées. Voici les deux autres méthodes d'importation disponibles:

  • Importation de .unitypackage fichiers dans le répertoire Assets/ de votre projet...
  • Importer à l'aide de la méthode Gestionnaire de packages Unity (UPM) <ph type="x-smartling-placeholder">
      </ph>
    • Il s'agit de la méthode recommandée pour gérer les packages dans Unity 2018.4 et versions ultérieures.
    • Utilisez cette méthode pour faciliter les futures mises à jour de version et nettoyer votre répertoire Assets/.

Dans votre projet Unity, vous ne devez utiliser qu'une seule méthode d'importation pour gérer tous vos Packages Firebase. Les instructions ci-dessous peuvent être utilisées non seulement pour mettre à jour des packages individuels, mais aussi, si nécessaire, pour migrer vers UPM (méthode d'importation recommandée).