Catch up on everthing we announced at this year's Firebase Summit. 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? Achten Sie darauf , die auschecken Hauptfirebase FAQ für mehr pan-Firebase oder produktspezifische FAQ.

.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 verwendet Komponenten des Parse SDK einige .NET 4.x Klassen in früheren Versionen von .NET zur Verfügung zu stellen.

Daher ist die Firebase Unity SDK Version 5.4.0 zur Verfügung stellen und später Plugins , die mit kompatibel sind entweder .NET 3.x oder 4.x .NET in dotnet3 und dotnet4 Verzeichnissen des Firebase Unity SDK.

Wenn Sie ein Firebase-Plug-in importieren, das mit der in Ihrem Projekt aktivierten .NET-Version nicht kompatibel ist, werden Kompilierungsfehler von einigen Typen im .NET-Framework angezeigt, 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:

  • In der Unity - Projekt, navigate zu Assets> Play - Dienste Resolver> Version Handler> Aktualisieren Sie die richtigen DLLs für Ihr Projekt zu ermöglichen.

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 verwendet Komponenten des Parse SDK einige .NET 4.x Klassen in früheren Versionen von .NET zur Verfügung zu stellen.

Daher stellt die Firebase Unity SDK - Version 5.4.0 und später Typ Forwarding DLLs , die Parse - Typen weiterleiten (zB Parse Implementierung von System.Threading.Tasks.Task ) mit dem .NET - Framework. Leider verarbeitet IL2CPP (ein Transpiler, der C# in C++ konvertiert), das in Unity 2017.1.x ausgeliefert wird, 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 Vernetzung

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, z. B. Version 2017.1 oder 2017.3.

Fehlende Firebase Android-Konfigurationsdatei in Unity 2020

Um Unterstützung Versionen von Unity, die die Gradle bauen, die Firebase - Editor - Tool erzeugt nicht die Fähigkeit haben , anpassen Assets/Plugins/Android/Firebase/res/values/google-services.xml als Android - Ressource zu verpackenden in ein Android-Build, damit das Firebase SDK ihn zum Initialisieren der standardmäßigen FirebaseApp-Instanz verwenden kann.

In Unity 2020 müssen alle Android - Ressourcen in Verzeichnissen mit einem seine .androidlib Suffix. Wenn Ihr Projekt ein Firebase SDK verwendet , die eine erzeugt Assets/Plugins/Android/Firebase - Verzeichnis, benennen Sie sie um Assets/Plugins/Android/Firebase.androidlib . Stellen Sie sicher , es enthält AndroidManifest.xml , project.properties und res/values/google-services.xml .

Ein Problem mit Single Dex beim Erstellen der Android-App

Beim Erstellen der Android-App kann es zu einem Build-Fehler im Zusammenhang mit einer einzelnen Dex-Datei kommen. Die Fehlermeldung ähnelt der folgenden, wenn Ihr Projekt für die Verwendung des Gradle-Buildsystems konfiguriert ist.

Cannot fit requested classes in a single dex file.

Dalvik Executable ( .dex ) Dateien werden verwendet , um einen Satz von Klassendefinitionen und ihre zugehörigen Zusatzdaten für Android - Anwendungen (halten .apk ). Eine einzelne Dexdatei ist auf 65.536 Methoden beschränkt. Der Build schlägt fehl, wenn die Gesamtzahl der Methoden aus allen Android-Bibliotheken in Ihrem Projekt dieses Limit überschreitet.

Einheit eingeführt Minifizierung in 2017,2, die Proguard (oder andere Werkzeuge in einigen Versionen von Unity) verwendet nicht verwendeten Code Streifen aus, die die Gesamtzahl der referenzierten Methoden in einer einzigen dex - Datei reduzieren. Die Option kann im Player - Einstellungen> Android> Verlag Einstellungen> Minify finden. Die Optionen können sich in verschiedenen Unity-Versionen unterscheiden. Lesen Sie daher die offizielle Unity-Dokumentation.

Wenn die Anzahl der referenzierten Methoden noch den Grenzwert überschreitet, ist eine weitere Option aktivieren multidex . Es gibt mehrere Möglichkeiten, dies in Unity zu erreichen:

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

Weitere Details finden sich in der multidex Bedienungsanleitung .

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), Firebase deaktiviert Entzuckern für alle seine Android - Bibliotheken (siehe Release-Info ). 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 das Hinzufügen compileOptions Block standardmäßig in gradle Build - Dateien. Um diesen Build-Fehler in Unity 2017 und Unity 2018 zu beheben, führen Sie einen der folgenden Schritte aus:

  • Fügen Sie einen compileOptions Block zu Ihrer gradle Vorlage:

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

      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 Build Ausfälle .

Probleme beim Erstellen für iOS mit Cocoapods

Beim Erstellen für iOS kann die Cocoapod-Installation mit einem Fehler bezüglich des Sprachgebietsschemas oder der UTF-8-Codierung fehlschlagen. Es gibt derzeit verschiedene Möglichkeiten, das Problem zu umgehen.

  • Vom Terminal, laufen pod install direkt, und öffnen Sie die resultierende Datei xcworkspace.

  • Aktualisieren Sie die Version von Cocoapods auf 1.10.2. Das Problem besteht nur in Version 1.11 und neuer.

  • In Ihrem ~/.bash_profile oder gleichwertig, Add export LANG=en_US.UTF-8