Diese Seite bietet Tipps und Fehlerbehebung für Unity-spezifische Probleme, die bei der Verwendung von Firebase auftreten können.
Haben Sie andere Herausforderungen oder wird Ihr Problem unten nicht aufgeführt? Sehen Sie sich unbedingt die Haupt-FAQ zu Firebase an, um mehr übergreifende Firebase- oder produktspezifische FAQ zu erhalten.
.NET-Kompatibilität bei Verwendung von Unity 2017.x und höher
Firebase unterstützt .NET 4.x als experimentelle Build-Option in Unity 2017 und höher. Firebase-Plug-ins verwenden Komponenten des Parse SDK , um einige .NET 4.x-Klassen in früheren Versionen von .NET bereitzustellen.
Daher bietet das Firebase Unity SDK Version 5.4.0
und höher Plug-ins, die entweder mit .NET 3.x oder .NET 4.x in den Verzeichnissen dotnet3
und dotnet4
des Firebase Unity SDK kompatibel sind.
Wenn Sie ein Firebase-Plug-in importieren, das nicht mit der in Ihrem Projekt aktivierten .NET-Version kompatibel ist, sehen Sie Kompilierungsfehler von einigen Typen im .NET-Framework, die vom Parse SDK implementiert werden.
So beheben Sie den Kompilierungsfehler, wenn Sie .NET 3.x verwenden:
- Entfernen oder deaktivieren Sie die folgenden DLLs für alle Plattformen:
-
Parse/Plugins/dotNet45/Unity.Compat.dll
-
Parse/Plugins/dotNet45/Unity.Tasks.dll
-
- Aktivieren Sie die folgenden DLLs für alle Plattformen:
-
Parse/Plugins/Unity.Compat.dll
-
Parse/Plugins/Unity.Tasks.dll
-
So beheben Sie den Kompilierungsfehler, wenn Sie .NET 4.x verwenden:
- Entfernen oder deaktivieren Sie die folgenden DLLs für alle Plattformen:
-
Parse/Plugins/Unity.Compat.dll
-
Parse/Plugins/Unity.Tasks.dll
-
- Aktivieren Sie die folgenden DLLs für alle Plattformen:
-
Parse/Plugins/dotNet45/Unity.Compat.dll
-
Parse/Plugins/dotNet45/Unity.Tasks.dll
-
Wenn Sie ein anderes Firebase-Plug-in importieren:
- Navigieren Sie in Ihrem Unity-Projekt zu Assets > Play Services Resolver > Version Handler > Update , um die richtigen DLLs für Ihr Projekt zu aktivieren.
Unity 2017.1 IL2CPP-Kompilierung in .NET 4.x-Projekten
Firebase unterstützt .NET 4.x als experimentelle Build-Option in Unity 2017 und höher. Firebase-Plug-ins verwenden Komponenten des Parse SDK , um einige .NET 4.x-Klassen in früheren Versionen von .NET bereitzustellen.
Daher bietet das Firebase Unity SDK Version 5.4.0 und höher Typweiterleitungs-DLLs, die Parse-Typen (z. B. Parse-Implementierung von System.Threading.Tasks.Task
) an das .NET-Framework weiterleiten. Leider verarbeitet IL2CPP (ein Transpiler, der C# in C++ konvertiert), der in Unity 2017.1.x enthalten ist, Typweiterleitungs-DLLs nicht korrekt, was zu Build-Fehlern führt, die den folgenden ähneln:
Fatal error in Unity CIL Linker Mono.Cecil.ResolutionException: Failed to
resolve System.Threading.Tasks.TaskCompletionSource`1<T>
Derzeit ist keine Problemumgehung für .NET 4.x IL2CPP-Buildfehler in Unity 2017.1 verfügbar, daher müssen Sie auf Unity 2017.2 oder höher aktualisieren, um .NET 4.x in Projekten zu verwenden, die mit IL2CPP kompiliert wurden.
Unity 2017.2-Netzwerk
Firebase Realtime Database erstellt TLS-Netzwerkverbindungen mithilfe des .NET-Netzwerkstapels. Die TLS-Funktionalität ist in Unity 2017.2 bei Verwendung von .NET 4.6 unterbrochen, was dazu führt, dass das Echtzeitdatenbank-Plugin in Editoren und auf dem Desktop fehlschlägt.
Es gibt keine Problemumgehung für dieses Problem, daher müssen Sie eine andere Version von Unity verwenden, beispielsweise Version 2017.1 oder 2017.3.
Fehlende Firebase-Android-Konfigurationsdatei in Unity 2020
Um Versionen von Unity zu unterstützen, die den Gradle-Build nicht anpassen können, generiert das Firebase-Editor-Tool Assets/Plugins/Android/Firebase/res/values/google-services.xml
als Android-Ressource, die in eine Android-Build, damit das Firebase SDK damit die FirebaseApp-Standardinstanz initialisieren kann.
In Unity 2020 müssen sich alle Android-Ressourcen in Verzeichnissen mit dem Suffix .androidlib
befinden. Wenn Ihr Projekt ein Firebase-SDK verwendet, das ein Assets/Plugins/Android/Firebase
Verzeichnis generiert, benennen Sie es in Assets/Plugins/Android/Firebase.androidlib
um. Stellen Sie sicher, dass es AndroidManifest.xml
, project.properties
und res/values/google-services.xml
enthält.
Ein Problem mit einzelnem Dex beim Erstellen der Android-App
Beim Erstellen einer Android-App kann es zu einem Build-Fehler kommen, der mit einer einzelnen dex-Datei zusammenhängt. Die Fehlermeldung sieht etwa so aus, wenn Ihr Projekt für die Verwendung des Gradle-Build-Systems konfiguriert ist.
Cannot fit requested classes in a single dex file.
Ausführbare Dalvik-Dateien ( .dex
) werden verwendet, um eine Reihe von Klassendefinitionen und ihre zugehörigen Zusatzdaten für Android-Anwendungen ( .apk
) zu speichern. Eine einzelne dex-Datei ist auf Verweise auf 65.536 Methoden beschränkt. Der Build schlägt fehl, wenn die Gesamtzahl der Methoden aus allen Android-Bibliotheken in Ihrem Projekt diese Grenze überschreitet.
Unity führte Minification in 2017.2 ein, das Proguard (oder andere Tools in einigen Versionen von Unity) verwendet, um ungenutzten Code zu entfernen, wodurch die Gesamtzahl der referenzierten Methoden in einer einzelnen dex-Datei reduziert werden kann. Die Option finden Sie unter Player-Einstellungen > Android > Veröffentlichungseinstellungen > Minimieren . Die Optionen können sich in verschiedenen Unity-Versionen unterscheiden, beziehen Sie sich daher auf die offizielle Unity-Dokumentation.
Wenn die Anzahl der referenzierten Methoden immer noch das Limit überschreitet, besteht eine weitere Option darin, multidex
zu aktivieren. Es gibt mehrere Möglichkeiten, dies in Unity zu erreichen:
- Wenn
Custom Gradle Template
unterPlayer Settings
aktiviert ist, ändern SiemainTemplate.gradle
. - Wenn Sie Android Studio zum Erstellen des exportierten Projekts verwenden, ändern Sie
build.gradle
Datei auf Modulebene.
Weitere Einzelheiten finden Sie im multidex-Benutzerhandbuch .
Java 8-Unterstützung und Desugaring für Android-Builds in Unity 2017 und Unity 2018 (Firebase Unity SDK 8.0.0 und höher)
Im Mai 2021 (Firebase BoM v28.0.0) hat Firebase das Desugaring für alle seine Android-Bibliotheken deaktiviert (siehe Versionshinweis ). Beim Erstellen einer Android-App mit Firebase Unity SDK (8.0.0 und höher) wird möglicherweise der folgende Build-Fehler angezeigt:
> Error while dexing.
The dependency contains Java 8 bytecode. Please enable desugaring by adding the following to build.gradle
Diese Änderung betrifft nur Android-Builds in Unity 2017 und Unity 2018. Neuere Versionen von Unity fügen den compileOptions
Block standardmäßig in Gradle-Build-Dateien hinzu. Führen Sie einen der folgenden Schritte aus, um diesen Build-Fehler in Unity 2017 und Unity 2018 zu beheben:
Fügen Sie Ihrer Gradle-Vorlage einen
compileOptions
-Block hinzu:- Verwenden Sie
Gradle
als Build-System. - Aktivieren Sie
Custom Gradle Template
unterPlayer Settings
. Fügen Sie
mainTemplate.gradle
(oderbuild.gradle
Modulebene, wenn Sie ein Projekt für Android Studio exportieren) die folgenden Zeilen hinzu:android { compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } }
- Verwenden Sie
Erhöhen Sie alternativ die minSdkVersion für Ihr Android-Projekt auf 26 oder höher.
Siehe auch Android-Fehlerbehebung – Entzuckerung von Build-Fehlern .
Probleme beim Erstellen für iOS mit Cocoapods
Beim Erstellen für iOS schlägt die Cocoapod-Installation möglicherweise mit einem Fehler bezüglich des Sprachgebietsschemas oder der UTF-8-Codierung fehl. Derzeit gibt es verschiedene Möglichkeiten, das Problem zu umgehen.
Führen Sie vom Terminal aus
pod install
direkt aus und öffnen Sie die resultierende xcworkspace-Datei.Führen Sie ein Downgrade der Version von Cocoapods auf 1.10.2 durch. Das Problem besteht nur in Version 1.11 und höher.
Fügen Sie in Ihrem
~/.bash_profile
oder Äquivalentexport LANG=en_US.UTF-8
hinzu
So aktualisieren Sie die Version von Firebase Unity SDKs
Der Prozess zum Aktualisieren der Versionen von Firebase Unity SDKs hängt davon ab, wie sie ursprünglich importiert wurden. Hier sind die beiden alternativen Importmethoden:
- Importieren von
.unitypackage
Dateien in dasAssets/
-Verzeichnis Ihres Projekts - Importieren mit dem Unity Package Manager (UPM)
- Dies ist die empfohlene Methode zum Verwalten von Paketen in Unity 2018.4+.
- Verwenden Sie diese Methode, um zukünftige Versionsaktualisierungen zu vereinfachen und Ihr
Assets/
-Verzeichnis sauberer zu machen.
In Ihrem Unity-Projekt sollten Sie nur eine Importmethode verwenden, um alle Ihre Firebase-Pakete zu verwalten. Die folgenden Anweisungen können verwendet werden, um nicht nur die Version einzelner Pakete zu aktualisieren, sondern bei Bedarf auch die Paketverwaltung auf UPM zu migrieren (die empfohlene Importmethode).
Wenn sich Firebase-Pakete im Assets/
-Verzeichnis befinden, haben Sie zwei Möglichkeiten, die SDK-Version zu aktualisieren:
Option 1 (empfohlen) : Migration zur Verwendung von UPM (verfügbar in Unity 2018.4+)
- Befolgen Sie die von Firebase bereitgestellten Anweisungen, um die Paketverwaltung zu UPM zu migrieren .
- Diese Methode erfordert zwar mehr Ersteinrichtung als die weitere Verwendung des
.unitypackage
Workflows, zahlt sich aber bei späteren SDK-Versionsaktualisierungen aus.
Option 2 : Verwenden Sie weiterhin
.unitypackage
Dateien, um sie in dasAssets/
-Verzeichnis zu importierenImportieren Sie jedes der Pakete für die aktualisierte Version.
Wenn Sie firebase_unity_sdk.zip von der Firebase-Website herunterladen, stellen Sie sicher, dass Sie alle
.unitypackages
aus dem richtigendotnet
Ordner importieren.- Wenn Sie Unity 2019 oder höher verwenden, importieren Sie aus dem
dotnet4
Ordner. - Wählen Sie andernfalls Scripting Runtime Version in den Player-Einstellungen aus und importieren Sie aus dem
dotnet3
Ordner, wenn es auf „.NET 3.x“ eingestellt ist.
- Wenn Sie Unity 2019 oder höher verwenden, importieren Sie aus dem
Das Überschreiben der zuvor importierten Paketversionen sollte automatisch vom External Dependency Manager gehandhabt werden (der automatisch enthalten ist, wenn Sie die Firebase
.unitypackages
importieren).Wenn dieser automatische Prozess jedoch fehlschlägt, müssen Sie die folgenden Ordner manuell löschen und dann den obigen Importschritt erneut versuchen.
-
Assets/Editor Default Resources/Firebase
-
Assets/ExternalDependencyManager
-
Assets/Firebase
-
Assets/Parse
-
Assets/Plugins/iOS/Firebase
-
Wenn Firebase-Pakete von UPM verwaltet werden, importieren Sie die neuere SDK-Version als .tgz
. Dieser Import überschreibt automatisch die vorherige Version.