Fehlerbehebung & Häufig gestellte Fragen zu Unity und Firebase

Auf dieser Seite finden Sie Tipps und Hinweise zur Fehlerbehebung für Unity-spezifische Probleme, die bei der Verwendung von Firebase auftreten können.

Sie haben andere Probleme oder können das unten beschriebene Problem nicht sehen? Weitere Firebase-spezifische oder allgemeine häufig gestellte Fragen finden Sie in den häufig gestellten Fragen zu Firebase.

.NET-Kompatibilität bei Verwendung von Unity 2017.x und höher

Firebase unterstützt .NET 4.x als experimentelle Buildoption 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 sind im Firebase Unity SDK ab Version 5.4.0 Plug-ins enthalten, die entweder mit .NET 3.x oder .NET 4.x kompatibel sind. Sie finden sie in den Verzeichnissen dotnet3 und dotnet4 des Firebase Unity SDK.

Wenn Sie ein Firebase-Plug-in importieren, das nicht mit der in Ihrem Projekt aktivierten .NET-Version kompatibel ist, werden beim Kompilieren einiger Typen im .NET-Framework, die vom Parse SDK implementiert werden, Fehler angezeigt.

So beheben Sie den Kompilierungsfehler, wenn Sie .NET 3.x verwenden:

  1. Entfernen oder deaktivieren Sie die folgenden DLLs für alle Plattformen:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll
  2. Aktiviere 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:

  1. Entfernen oder deaktivieren Sie die folgenden DLLs für alle Plattformen:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll
  2. Aktiviere die folgenden DLLs für alle Plattformen:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll

Wenn Sie ein weiteres Firebase-Plug-in importieren:

  • Rufen Sie in Ihrem Unity-Projekt Assets > Play Services Resolver > Version Handler > Update auf, um die richtigen DLLs für Ihr Projekt zu aktivieren.

IL2CPP-Kompilierung in Unity 2017.1 in .NET 4.x-Projekten

Firebase unterstützt .NET 4.x als experimentelle Buildoption 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 werden ab der Version 5.4.0 des Firebase Unity SDK DLLs zur Weiterleitung von Typen bereitgestellt, die Parse-Typen (z. B. die Parse-Implementierung von System.Threading.Tasks.Task) an das .NET Framework weiterleiten. Leider verarbeitet IL2CPP (ein Transcompiler, der C# in C++ konvertiert), der in Unity 2017.1.x enthalten ist, keine DLLs zur Typweiterleitung richtig. Dies führt zu Buildfehlern, die in etwa so aussehen:

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

Derzeit gibt es keine Behelfslösung für .NET 4.x-IL2CPP-Build-Fehler in Unity 2017.1. Sie müssen also ein Upgrade auf Unity 2017.2 oder höher durchführen, um .NET 4.x in Projekten zu verwenden, die mit IL2CPP kompiliert wurden.

Netzwerk in Unity 2017.2

Firebase Realtime Database erstellt TLS-Netzwerkverbindungen mit dem .NET-Netzwerkstack. Die TLS-Funktion ist in Unity 2017.2 bei Verwendung von .NET 4.6 defekt, was dazu führt, dass das Realtime Database-Plug-in in Editoren und auf dem Computer fehlschlägt.

Für dieses Problem gibt es keine Problemumgehung. Sie müssen also eine andere Version von Unity verwenden, z. B. Version 2017.1 oder 2017.3.

Android-Konfigurationsdatei für Firebase fehlt in Unity 2020

Damit Versionen von Unity unterstützt werden, in denen der Gradle-Build nicht angepasst werden kann, generiert das Firebase-Editor-Tool Assets/Plugins/Android/Firebase/res/values/google-services.xml als Android-Ressource, die in einen Android-Build verpackt wird, 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 in Ihrem Projekt ein Firebase SDK verwendet wird, das ein Verzeichnis Assets/Plugins/Android/Firebase generiert, benennen Sie es in Assets/Plugins/Android/Firebase.androidlib um. Sie muss aber auf jeden Fall AndroidManifest.xml, project.properties und res/values/google-services.xml enthalten.

Problem mit Single Dex beim Erstellen einer Android-App

Beim Erstellen einer Android-App können Build-Fehler auftreten, die mit der Verwendung einer einzelnen DEX-Datei zusammenhängen. Wenn Ihr Projekt für die Verwendung des Gradle-Build-Systems konfiguriert ist, sieht die Fehlermeldung in etwa so aus:

Cannot fit requested classes in a single dex file.

In Dalvik-Ausführbaren (.dex) werden eine Reihe von Klassendefinitionen und die zugehörigen Zusatzdaten für Android-Anwendungen (.apk) gespeichert. Eine einzelne dex-Datei kann nur auf 65.536 Methoden verweisen. Der Build schlägt fehl, wenn die Gesamtzahl der Methoden aus allen Android-Bibliotheken in Ihrem Projekt dieses Limit überschreitet.

Unity hat 2017.2 die Minification eingeführt, bei der Proguard (oder andere Tools in einigen Versionen von Unity) verwendet werden, um nicht verwendeten Code zu entfernen. Dadurch kann die Gesamtzahl der referenzierten Methoden in einer einzelnen DEX-Datei reduziert werden. Die Option finden Sie unter Player-Einstellungen > Android > Veröffentlichungseinstellungen > Komprimieren. Die Optionen können sich in verschiedenen Unity-Versionen unterscheiden. Weitere Informationen finden Sie in der offiziellen Unity-Dokumentation.

Wenn die Anzahl der referenzierten Methoden das Limit weiterhin überschreitet, können Sie auch multidex aktivieren. In Unity gibt es mehrere Möglichkeiten, dies zu tun:

  • Wenn Custom Gradle Template unter Player Settings aktiviert ist, ändern Sie mainTemplate.gradle.
  • Wenn Sie das exportierte Projekt mit Android Studio erstellen, ändern Sie die Datei build.gradle auf Modulebene.

Weitere Informationen finden Sie im Multidex-Nutzerhandbuch.

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) wurde die Desugarierung für alle Android-Bibliotheken in Firebase deaktiviert (siehe Versionshinweis). Beim Erstellen einer Android-App mit dem Firebase Unity SDK (8.0.0 und höher) kann der folgende Buildfehler auftreten:

> 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. In neueren Versionen von Unity wird der Block compileOptions standardmäßig in Gradle-Builddateien hinzugefügt. 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:

    1. Verwenden Sie Gradle als Build-System.
    2. Aktivieren Sie unter Player Settings die Option Custom Gradle Template.
    3. Fügen Sie mainTemplate.gradle (oder build.gradle auf Modulebene, wenn Sie ein Projekt für Android Studio exportieren) die folgenden Zeilen hinzu:

      android {
          compileOptions {
              sourceCompatibility 1.8
              targetCompatibility 1.8
          }
      }
      
  • Alternativ können Sie die minSdkVersion für Ihr Android-Projekt auf 26 oder höher erhöhen.

Weitere Informationen finden Sie unter Fehlerbehebung bei Android – Desugaring-Build-Fehler.

Probleme beim Erstellen von iOS-Apps mit Cocoapods

Wenn Sie für iOS erstellen, schlägt die Cocoapod-Installation möglicherweise mit einem Fehler bezüglich der Sprachlokalisierung oder der UTF-8-Codierung fehl. Es gibt derzeit mehrere Möglichkeiten, das Problem zu umgehen.

  • Führen Sie pod install direkt im Terminal aus und öffnen Sie die resultierende xcworkspace-Datei.

  • Führen Sie ein Downgrade der Cocoapods-Version auf 1.10.2 aus. Das Problem tritt nur in Version 1.11 und höher auf.

  • Füge in deiner ~/.bash_profile oder einem entsprechenden Betrag export LANG=en_US.UTF-8 hinzu

Version des Firebase Unity SDKs aktualisieren

Wie Sie die Versionen der Firebase Unity SDKs aktualisieren, hängt davon ab, wie sie ursprünglich importiert wurden. Hier sind die beiden alternativen Importmethoden:

  • .unitypackage-Dateien in das Assets/-Verzeichnis Ihres Projekts importieren
  • Importieren mit dem Unity Package Manager (UPM)
    • Dies ist die empfohlene Methode zum Verwalten von Paketen in Unity 2018.4 und höher.
    • Mit dieser Methode lassen sich zukünftige Versionsupdates einfacher durchführen und Ihr Assets/-Verzeichnis wird aufgeräumt.

In Ihrem Unity-Projekt sollten Sie nur eine Importmethode verwenden, um alle Firebase-Pakete zu verwalten. Mit der folgenden Anleitung können Sie nicht nur die Version einzelner Pakete aktualisieren, sondern bei Bedarf auch die Paketverwaltung zu UPM migrieren (die empfohlene Importmethode).