Cette page propose des conseils et des solutions de dépannage pour les problèmes spécifiques à Unity que vous pouvez rencontrer lors de l'utilisation de Firebase.
Vous rencontrez d'autres difficultés ou vous ne trouvez pas votre problème ci-dessous ? N'hésitez pas à consulter les questions fréquentes principales sur Firebase pour en savoir plus sur Firebase ou sur des questions spécifiques à un produit.
Compatibilité .NET lorsque vous utilisez Unity 2017.x ou version ultérieure
Firebase est compatible avec .NET 4.x en tant qu'option de compilation expérimentale dans Unity 2017 et versions ultérieures. 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
du SDK Unity Firebase et les versions ultérieures fournissent des plug-ins compatibles avec .NET 3.x ou .NET 4.x dans les répertoires dotnet3
et dotnet4
du SDK Unity Firebase.
Si vous importez un plug-in Firebase incompatible avec la version .NET activée dans votre projet, des erreurs de compilation s'afficheront pour certains types du framework .NET implémentés par le SDK Parse.
Pour résoudre l'erreur de compilation si vous utilisez .NET 3.x:
- Supprimez ou désactivez les DLL suivantes pour toutes les plates-formes :
Parse/Plugins/dotNet45/Unity.Compat.dll
Parse/Plugins/dotNet45/Unity.Tasks.dll
- 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:
- Supprimez ou désactivez les DLL suivantes pour toutes les plates-formes :
Parse/Plugins/Unity.Compat.dll
Parse/Plugins/Unity.Tasks.dll
- 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 à Assets (Éléments) > Play Services Resolver (Résolveur de services Play) > Version Handler (Gestionnaire de version) > Update (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 versions ultérieures. 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, le SDK Unity Firebase version 5.4.0 et ultérieure fournit des DLL de transfert de type qui transfèrent les types Parse (par exemple, l'implémentation de System.Threading.Tasks.Task
) vers le framework .NET. Malheureusement, IL2CPP (un transpilateur qui convertit C# en C++) fourni dans Unity 2017.1.x ne traite pas correctement les DLL de transfert de type, ce qui entraîne des erreurs de compilation semblables aux suivantes:
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 IL2CPP .NET 4.x 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 de la pile réseau .NET. 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 pour 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 ne peuvent pas personnaliser la compilation Gradle, l'outil d'édition Firebase génère Assets/Plugins/Android/Firebase/res/values/google-services.xml
en tant que ressource Android à empaqueter dans une compilation Android, afin que le SDK Firebase puisse l'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 un répertoire Assets/Plugins/Android/Firebase
, renommez-le en Assets/Plugins/Android/Firebase.androidlib
. Assurez-vous qu'il contient AndroidManifest.xml
, project.properties
et res/values/google-services.xml
.
Problème lié à un seul dex lors de la compilation d'une application Android
Lors de la compilation d'une application Android, vous pouvez rencontrer une erreur de compilation liée à la présence d'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 de méthodes de toutes les bibliothèques Android de votre projet dépasse cette limite.
Unity a introduit la minification en 2017.2. Elle utilise Proguard (ou d'autres outils dans certaines versions d'Unity) 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. 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 toujours la limite, vous pouvez également activer multidex
. Pour ce faire, plusieurs méthodes s'offrent à vous dans Unity:
- Si
Custom Gradle Template
sousPlayer Settings
est activé, modifiezmainTemplate.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 de MultiDex.
Compatibilité avec 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 (version 28.0.0 de la nomenclature Firebase Android), Firebase a désactivé le désucrage pour toutes ses bibliothèques Android (voir les notes de version). Lorsque vous créez une application Android avec le SDK Firebase Unity (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:- Utilisez
Gradle
comme système de compilation. - Activez
Custom Gradle Template
sousPlayer Settings
. Ajoutez les lignes suivantes à
mainTemplate.gradle
(oubuild.gradle
au niveau du module si vous exportez un projet pour Android Studio):android { compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } }
- Utilisez
Vous pouvez également définir la valeur minSdkVersion de votre projet Android sur 26 ou version ultérieure.
Consultez également la section Dépannage Android : échecs de désugarisation de la compilation.
Problèmes lors de la compilation pour iOS avec Cocoapods
Lors de la compilation pour iOS, l'installation de Cocoapod peut échouer avec une erreur concernant les paramètres régionaux de la langue ou l'encodage UTF-8. Il existe actuellement plusieurs façons de contourner ce 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. Ce problème n'existe que dans les versions 1.11 et ultérieures.
Dans votre
~/.bash_profile
ou équivalent, ajoutezexport LANG=en_US.UTF-8
.
Mettre à jour la version des SDK Unity Firebase
La procédure de mise à jour des versions des SDK Unity Firebase dépend de la manière dont ils ont été importés initialement. Voici les deux autres méthodes d'importation:
- Importer des fichiers
.unitypackage
dans le répertoireAssets/
de votre projet - Importer à l'aide du gestionnaire de paquets Unity (UPM)
- 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 la version de packages individuels, mais aussi, si nécessaire, pour migrer la gestion des packages vers UPM (méthode d'importation recommandée).