Fehlerbehebung & FAQ für Unity und Firebase

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 ist Ihr Problem unten nicht aufgeführt? Schauen Sie sich unbedingt die Haupt-FAQ zu Firebase an, um weitere Firebase-übergreifende 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-Plugins nutzen Komponenten des Parse SDK , um einige .NET 4.x-Klassen in früheren Versionen von .NET bereitzustellen.

Daher stellt das Firebase Unity SDK Version 5.4.0 und höher Plugins bereit, 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-Plugin importieren, das mit der in Ihrem Projekt aktivierten .NET-Version nicht kompatibel ist, werden bei einigen Typen im .NET-Framework, die vom Parse SDK implementiert werden, Kompilierungsfehler 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. 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:

  1. Entfernen oder deaktivieren Sie die folgenden DLLs für alle Plattformen:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll
  2. 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-Plugin 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-Plugins nutzen Komponenten des Parse SDK , um einige .NET 4.x-Klassen in früheren Versionen von .NET bereitzustellen.

Daher stellt das Firebase Unity SDK Version 5.4.0 und höher Typweiterleitungs-DLLs bereit, 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 Buildfehlern 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. Sie müssen daher auf Unity 2017.2 oder höher aktualisieren, um .NET 4.x in mit IL2CPP kompilierten Projekten verwenden zu können.

Unity 2017.2-Netzwerke

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 fehlerhaft, was dazu führt, dass das Echtzeitdatenbank-Plugin in Editoren und auf dem Desktop fehlschlägt.

Für dieses Problem gibt es keine Problemumgehung. Sie müssen daher 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 nicht über die Möglichkeit verfügen, den Gradle-Build anzupassen, generiert das Firebase-Editor-Tool Assets/Plugins/Android/Firebase/res/values/google-services.xml als Android-Ressource, die in eine gepackt werden soll Android-Build, damit das Firebase SDK damit die standardmäßige FirebaseApp-Instanz 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 Single Dex beim Erstellen der Android-App

Beim Erstellen einer Android-App kann es zu einem Buildfehler kommen, der auf eine einzelne Dex-Datei zurückzuführen ist. Die Fehlermeldung sieht etwa wie folgt 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 die zugehörigen Zusatzdaten für Android-Anwendungen ( .apk ) zu speichern. Eine einzelne Dex-Datei darf nur auf 65.536 Methoden verweisen. Der Build schlägt fehl, wenn die Gesamtzahl der Methoden aus allen Android-Bibliotheken in Ihrem Projekt diesen Grenzwert überschreitet.

Unity führte 2017.2 Minification ein, das Proguard (oder andere Tools in einigen Versionen von Unity) verwendet, um ungenutzten Code zu entfernen, was die Gesamtzahl der referenzierten Methoden in einer einzelnen Dex-Datei reduzieren kann. Die Option finden Sie unter Player-Einstellungen > Android > Veröffentlichungseinstellungen > Minifizieren . Die Optionen können in verschiedenen Unity-Versionen unterschiedlich sein. Weitere Informationen finden Sie in der offiziellen Unity-Dokumentation.

Wenn die Anzahl der referenzierten Methoden immer noch das Limit überschreitet, besteht eine weitere Möglichkeit darin, multidex zu aktivieren. In Unity gibt es mehrere Möglichkeiten, dies zu erreichen:

  • Wenn Custom Gradle Template unter Player Settings aktiviert ist, ändern Sie mainTemplate.gradle .
  • Wenn Sie Android Studio zum Erstellen des exportierten Projekts verwenden, ändern Sie die Datei build.gradle auf Modulebene.

Weitere Details finden Sie im Multidex-Benutzerhandbuch .

Java 8-Unterstützung und Entzuckerung 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 die Entzuckerung 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. Um diesen Build-Fehler in Unity 2017 und Unity 2018 zu beheben, führen Sie einen der folgenden Schritte aus:

  • Fügen Sie Ihrer Gradle-Vorlage einen compileOptions -Block hinzu:

    1. Verwenden Sie Gradle als Build-System.
    2. Aktivieren Sie Custom Gradle Template unter Player Settings .
    3. Fügen Sie die folgenden Zeilen zu mainTemplate.gradle (oder build.gradle Modulebene, wenn Sie ein Projekt für Android Studio exportieren) 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.

Siehe auch Android-Fehlerbehebung – Behebung 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-Kodierung fehl. Derzeit gibt es verschiedene Möglichkeiten, das Problem zu umgehen.

  • Führen Sie pod install direkt vom Terminal 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 neuer.

  • Fügen Sie in Ihrem ~/.bash_profile oder einem gleichwertigen Profil export LANG=en_US.UTF-8 hinzu

So aktualisieren Sie die Version der Firebase Unity SDKs

Der Prozess zum Aktualisieren der Versionen der Firebase Unity SDKs hängt davon ab, wie sie ursprünglich importiert wurden. Hier sind die beiden alternativen Importmethoden:

  • Importieren von .unitypackage Dateien in das Assets/ -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 einfacher und Ihr Assets/ Verzeichnis sauberer zu gestalten.

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