Fehlerbehebung & Häufig gestellte Fragen zu Unity und Firebase

Auf dieser Seite finden Sie Tipps und Informationen zur Fehlerbehebung bei Unity-spezifischen Problemen, 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 Firebase-FAQs.

.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 . Firebase-Plug-ins verwenden Komponenten des Parse SDK, um einige .NET 4.x-Klassen in früheren .NET-Versionen bereitzustellen.

Daher sind im Firebase Unity SDK ab Version 5.4.0 Plug-ins in den Verzeichnissen dotnet3 und dotnet4 verfügbar, die entweder mit .NET 3.x oder .NET 4.x kompatibel sind.

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. Aktivieren Sie die folgenden DLLs für alle Plattformen:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll

So beheben Sie den Kompilierungsfehler bei Verwendung von .NET 4.x:

  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 anderes Firebase-Plug-in importieren:

  • Gehen Sie in Ihrem Unity-Projekt zu Assets > Play Services-Resolver > Versions-Handler > Aktualisieren 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 Build-Option in Unity 2017 und . Firebase-Plug-ins verwenden Komponenten der Parse SDK, um einige .NET 4.x-Klassen in früheren Versionen von .NET

Daher bietet das Firebase Unity SDK in Version 5.4.0 und höher den Typ Weiterleitungs-DLLs, die Parse-Typen weiterleiten (z. B. die Parse-Implementierung von System.Threading.Tasks.Task) zum .NET Framework. 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 ausführen, um .NET 4.x in Projekte, die mit IL2CPP kompiliert wurden.

Unity 2017.2-Netzwerk

Firebase Realtime Database erstellt TLS-Netzwerkverbindungen mit dem .NET-Netzwerkstack. TLS funktioniert in Unity 2017.2 fehlerhaft, wenn .NET 4.6 zu Das Plug-in Realtime Database schlägt in Editoren und auf dem Desktop fehl.

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

Android-Konfigurationsdatei für Firebase fehlt in Unity 2020

Um Versionen von Unity zu unterstützen, die keine den Gradle-Build anpassen, den das Firebase-Editor-Tool generiert, Assets/Plugins/Android/Firebase/res/values/google-services.xml als Android-Gerät Ressource in einen Android-Build gepackt, damit das Firebase SDK um die FirebaseApp-Standardinstanz zu initialisieren.

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. Achte darauf, dass sie Folgendes enthält: AndroidManifest.xml, project.properties und res/values/google-services.xml

Problem mit Single Dex beim Erstellen einer Android-App

Beim Erstellen einer Android-App können Build-Fehler auftreten, weil mit einer einzelnen DEX-Datei. Die Fehlermeldung sieht in etwa so aus, ist für die Verwendung des Gradle-Build-Systems konfiguriert.

Cannot fit requested classes in a single dex file.

Dalvik Executable-Dateien (.dex) enthalten eine Reihe von Klassendefinitionen und zugehörige Zusatzdaten für Android-Apps (.apk). Ein einzelner Dex -Datei 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.

Unity hat Minification eingeführt 2017.2, wobei Proguard (oder andere Tools in einigen Versionen von Unity) verwendet wird. um ungenutzten Code zu entfernen, wodurch sich die Gesamtzahl Methoden in einer einzelnen DEX-Datei. Du findest die Option unter Player-Einstellungen > Android > Einstellungen für die Veröffentlichung > Minimieren. Die Optionen können sich in verschiedenen Unity-Versionen unterscheiden. Lesen Sie daher die offizielle Unity-Dokumentation.

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

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

Weitere Informationen finden Sie im Multidex-Nutzerhandbuch.

Unterstützung und Desugaring für Android-Builds in Unity 2017 und Unity 2018 (Firebase Unity SDK 8.0.0 und höher) mit Java 8

Im Mai 2021 (Firebase BoM v28.0.0) wurde die Desugarierung für alle Android-Bibliotheken in Firebase deaktiviert (siehe Versionshinweis). Wenn Sie eine Android-App mit dem Firebase Unity SDK (8.0.0 und höher) erstellen, 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 die folgenden Zeilen zu mainTemplate.gradle (oder Modulebene build.gradle, 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.

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. Derzeit gibt es mehrere Möglichkeiten, um das Problem zu umgehen.

  • Führen Sie im Terminal pod install direkt aus und öffnen Sie das 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.

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

Version der Firebase Unity SDKs aktualisieren

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

  • .unitypackage-Dateien werden in das Verzeichnis Assets/ Ihres Projekts importiert
  • Importieren mithilfe der Unity-Paketmanager (UPM)
    • Dies ist die empfohlene Methode zum Verwalten von Paketen in Unity 2018.4+.
    • Mit dieser Methode können Sie zukünftige Versionsupdates vereinfachen und Ihren Assets/ Directory Cleaner.

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).