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 ? Consultez les questions fréquentes principales sur Firebase pour obtenir d'autres questions fréquentes sur Firebase ou spécifiques à un produit.
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 multidex.
Problèmes lors de la compilation pour Android avec la version minimale de SDK 23
Lors de la compilation pour Android, si vous ciblez minSdkVersion
23, la compilation peut échouer à l 'étape de conversion au format .dex, généralement dans la tâche Gradle':launcher:mergeExtDexDebug', où il est indiqué que la transformation de l'une des bibliothèques Android a échoué. Cela est dû à un bug dans l'outil dex par défaut du SDK Android utilisé par la plupart des éditeurs Unity. Il peut être corrigé de plusieurs manières :
- Définissez
minSdkVersion
sur 24. - Activez la minification Android dans Player Settings > Android > Publishing Settings > Minify (Paramètres du lecteur > Android > Paramètres de publication > Minification).
- Spécifiez une autre version de l'outil dex en ajoutant ce code à votre fichier
settingsTemplate.gradle
:
buildscript {
repositories {
mavenLocal()
maven { url 'https://maven.google.com' }
mavenCentral()
}
dependencies {
classpath 'com.android.tools:r8:8.3.37'
}
}
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).
Packages importés en tant que fichiers .unitypackage
dans le répertoire Assets/
Si les packages Firebase se trouvent dans le répertoire Assets/
, deux options s'offrent à vous pour mettre à jour la version du SDK :
Option 1 (recommandée) : migrer vers UPM (disponible dans Unity 2018.4 ou version ultérieure)
- Suivez les instructions fournies par Firebase pour migrer la gestion des paquets vers UPM.
- Bien que cette méthode nécessite une configuration initiale plus importante que de continuer à utiliser le workflow
.unitypackage
, elle est payante en termes de facilité de mise à jour des versions ultérieures du SDK.
Option 2 : continuer à utiliser des fichiers
.unitypackage
pour les importer dans le répertoireAssets/
Importez chacun des packages pour la version mise à jour.
Si vous téléchargez firebase_unity_sdk.zip sur le site Web de Firebase, assurez-vous d'importer tous les
.unitypackages
à partir du bon dossierdotnet
.- Si vous utilisez Unity 2019 ou une version ultérieure, importez à partir du dossier
dotnet4
. - Sinon, sélectionnez Scripting Runtime Version (Version du runtime de script) dans Player Settings (Paramètres du joueur), et si elle est définie sur ".NET 3.x", importez à partir du dossier
dotnet3
.
- Si vous utilisez Unity 2019 ou une version ultérieure, importez à partir du dossier
Le remplacement des versions de package précédemment importées doit être géré automatiquement par le gestionnaire de dépendances externes (qui est automatiquement inclus lorsque vous importez
.unitypackages
Firebase).Toutefois, si et seulement si ce processus automatique échoue, vous devrez supprimer manuellement les dossiers suivants, puis réessayer l'étape d'importation ci-dessus.
Assets/Editor Default Resources/Firebase
Assets/ExternalDependencyManager
Assets/Firebase
Assets/Parse
Assets/Plugins/iOS/Firebase
Packages gérés par UPM
Si les packages Firebase sont gérés par UPM, importez la nouvelle version du SDK en tant que .tgz
.
Cette importation écrasera automatiquement la version précédente.