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 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'oubliez pas de consulter les questions fréquentes principales sur Firebase pour en savoir plus sur Firebase en général ou sur des produits spécifiques.

Problème lié au fichier dex unique lors de la compilation de l'application Android

Lorsque vous créez une application Android, vous pouvez rencontrer un échec de compilation 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 compilation Gradle.

Cannot fit requested classes in a single dex file.

Les fichiers Dalvik Executable (.dex) sont utilisés pour contenir un ensemble de définitions de classe et leurs 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 dans la version 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 de méthodes référencées dans un seul fichier dex. Vous trouverez l'option dans Player Settings > Android > Publishing Settings > Minify (Paramètres du lecteur > Android > Paramètres de publication > Réduire). Les options peuvent varier selon les versions d'Unity. Consultez la documentation officielle d'Unity.

Si le nombre de méthodes référencées dépasse toujours la limite, vous pouvez activer multidex. Il existe plusieurs façons d'y parvenir dans Unity :

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

Problèmes lors de la compilation pour Android avec minSdkVersion 23

Lorsque vous compilez pour Android, si vous ciblez minSdkVersion 23, la compilation peut échouer lors de l'étape de conversion au format .dex, généralement dans la tâche Gradle ":launcher:mergeExtDexDebug", où le message "Failed to transform" (Échec de la transformation) s'affiche pour l'une des bibliothèques Android. Cela est dû à un bug dans l'outil dex par défaut du SDK Android que la plupart des éditeurs Unity utilisent. Vous pouvez le corriger 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 > Minifier).
  • Spécifiez une autre version de l'outil dex en ajoutant ce qui suit à 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 le problème.

  • Depuis le terminal, exécutez directement pod install et ouvrez le fichier xcworkspace obtenu.

  • Rétrograder la version de CocoaPods vers la version 1.10.2 Ce problème n'existe que dans la version 1.11 et les versions ultérieures.

  • Dans votre ~/.bash_profile ou l'équivalent, ajoutez export 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 façon dont ils ont été importés initialement. Voici les deux autres méthodes d'importation :

  • Importer des fichiers .unitypackage dans le répertoire Assets/ de votre projet
  • Importer à l'aide du Gestionnaire de packages 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 rendre votre répertoire Assets/ plus propre.

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 (la méthode d'importation recommandée).