Catch up on highlights from Firebase at Google I/O 2023. Learn more

Fehlerbehebung und 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 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:

  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-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 unter Player Settings aktiviert ist, ändern Sie mainTemplate.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:

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

      android {
          compileOptions {
              sourceCompatibility 1.8
              targetCompatibility 1.8
          }
      }
      
  • 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 Äquivalent export 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 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 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).