Fehler beim Erstellen, Installieren und Ausführen des Spiels beheben

Einführung

Die folgende Anleitung hilft Ihnen, den Kompilierungs- und Build-Prozess für Unity-Spiele mit dem Firebase SDK for Unity zu debuggen. Sie beschreibt, wie Sie viele der häufigsten Probleme untersuchen und beheben können, die bei der Konfiguration und dem Build Ihres Spiels für eine neue Plattform oder nach einem Update auftreten können. Die Anleitung ist nach der Reihenfolge geordnet, in der diese Fehler im Prozess auftreten können. Gehen Sie die Anleitung in der Reihenfolge durch und fahren Sie fort, wenn die einzelnen Probleme behoben sind.

Weitere Informationen finden Sie in den FAQs zu Firebase für Unity.

Kompilierungsprobleme im Wiedergabemodus

Die erste Klasse von Build-Problemen kann beim Testen im Editor auftreten, bevor Sie versuchen, einen mobilen Build zu starten. Dieser Abschnitt behandelt alle Firebase-Fehler, die vor und während des Wiedergabemodus auftreten.

Wenn Unity startet oder Änderungen an Abhängigkeiten, Code oder anderen Assets erkennt, wird versucht, das Projekt neu zu erstellen. Wenn das Projekt zu diesem Zeitpunkt nicht kompiliert werden kann, protokolliert der Editor Kompilierungsfehler in der Konsole. Wenn Sie versuchen, in den Wiedergabemodus zu wechseln, wird im Tab Szene von Unity ein Fehler-Pop-up mit der Meldung All compiler errors have to be fixed before you can enter playmode! angezeigt.

Fehlende Typen, Klassen, Methoden und Member

Viele Firebase-Probleme treten auf, weil der Editor und der Compiler die erforderlichen Typen, Klassen, Methoden und Member nicht finden können. Häufige Symptome sind Varianten der folgenden Meldungen:

The type or namespace name ‘<CLASS OR NAMESPACE NAME>' could not be found. Are you missing a using directive or an assembly reference?

The type or namespace name <TYPE OR NAMESPACE NAME> does not exist in the namespace ‘Firebase<.OPTIONAL NESTED NAMESPACE NAME PATH>' (are you missing an assembly reference?)

‘<CLASS NAME>' does not contain a definition for ‘<MEMBER VARIABLE OR METHOD NAME>'

Lösungsschritte:
  1. Wenn Sie Firebase-Klassen oder -Methoden im Code verwenden, müssen Sie sie verfügbar machen, indem Sie die richtigen using-Anweisungen für die benötigten Firebase-Produkte verwenden.

    1. Beispiele aus MechaHamster: Level Up With Firebase Edition:
      1. using Firebase.RemoteConfig;
      2. using Firebase.Crashlytics;
  2. Prüfen Sie, ob Sie die entsprechenden Firebase-Pakete importiert haben:

    1. So importieren Sie die entsprechenden Pakete:
      1. Fügen Sie das Firebase Unity SDK als .unitypackages hinzu oder
      2. sehen Sie sich eine der Alternativen unter Zusätzliche Installationsoptionen für Unity an und führen Sie sie aus.
    2. Achten Sie darauf, dass für jedes Firebase-Produkt in Ihrem Projekt und EDM4U Folgendes gilt:
      • Sie haben dieselbe Version.
      • Sie wurden entweder ausschließlich als .unitypackages ODER ausschließlich über den Unity Package Manager installiert.
  3. Wenn Sie das Firebase Unity SDK vor Version 10.0.0 als .unitypackages importiert haben, enthält das ZIP-Archiv des Firebase Unity SDK Pakete für die Unterstützung von .NET 3.x und .NET 4.x. Achten Sie darauf, dass Sie nur die kompatible .NET Framework-Ebene in Ihr Projekt aufgenommen haben:

    1. Die Kompatibilität zwischen Versionen des Unity-Editors und .NET Framework-Ebenen wird unter Firebase zu einem Unity-Projekt hinzufügen beschrieben.
    2. Wenn Sie Ihre Firebase-Pakete versehentlich auf der falschen .NET Framework-Ebene importiert haben oder von der Verwendung von .unitypackages zu einer der zusätzlichen Installationsoptionen für Unity wechseln möchten , entfernen Sie am besten alle Firebase-Pakete mit den in diesem Migrationsabschnitt beschriebenen Methoden und importieren Sie dann alle Firebase-Pakete noch einmal.
  4. Prüfen Sie, ob der Editor Ihr Projekt neu erstellt und ob Ihre Versuche, das Spiel zu starten, den aktuellen Stand Ihres Projekts widerspiegeln:

    1. Standardmäßig wird der Unity-Editor so konfiguriert, dass er das Projekt neu erstellt, wenn Änderungen an Assets oder der Konfiguration erkannt werden.
    2. Möglicherweise wurde diese Funktion deaktiviert und der Unity-Editor ist auf manuelle Aktualisierung/Neukompilierung eingestellt. Prüfen Sie das und versuchen Sie gegebenenfalls eine manuelle Aktualisierung.

Laufzeitfehler im Wiedergabemodus

Wenn Ihr Spiel startet, aber beim Ausführen Probleme mit Firebase auftreten, versuchen Sie Folgendes:

Firebase-Bundles unter „Sicherheit & Datenschutz“ unter Mac OS genehmigen

Wenn beim Starten Ihres Spiels im Editor unter Mac OS ein Dialogfeld mit der Meldung „FirebaseCppApp-<version>.bundle kann nicht geöffnet werden, da der Entwickler nicht verifiziert werden kann.“ angezeigt wird, müssen Sie diese bestimmte Bundle-Datei im Menü „Sicherheit & Datenschutz“ von Mac genehmigen.

Klicken Sie dazu auf das Apple-Symbol > Systemeinstellungen > Sicherheit & Datenschutz.

Im Menü „Sicherheit“ etwa in der Mitte der Seite befindet sich ein Abschnitt mit der Meldung „Die Verwendung von „FirebaseCppApp-<version>.bundle“ wurde blockiert, da es nicht von einem identifizierten Entwickler stammt.“

Klicken Sie auf die Schaltfläche Trotzdem erlauben.

c35166e224cce720.png

Kehren Sie zu Unity zurück und drücken Sie noch einmal Play.

Daraufhin wird eine ähnliche Warnung wie die erste angezeigt:

5ad9ddb0d3a52892.png

Drücken Sie Öffnen. Ihr Programm kann dann fortgesetzt werden. Sie werden nicht noch einmal nach dieser bestimmten Datei gefragt.

Achten Sie darauf, dass Ihr Projekt gültige Konfigurationsdateien enthält und verwendet

  1. Achten Sie darauf, dass die Build-Einstellungen unter Datei > Build-Einstellungen für das gewünschte Ziel (iOS oder Android) festgelegt sind. Eine ausführlichere Beschreibung finden Sie in der Dokumentation zu den Build-Einstellungen von Unity.
  2. Laden Sie die Konfigurationsdatei für Ihre App (google-services.json für Android oder GoogleService-Info.plist für iOS) und das Build-Ziel in der Firebase-Konsole unter Projekteinstellungen > Ihre Apps herunter: Wenn Sie diese Dateien bereits haben, löschen Sie sie in Ihrem Projekt und ersetzen Sie sie durch die neueste Version. Achten Sie darauf, dass sie genau so geschrieben sind wie oben angezeigt, ohne "(1)" oder andere Zahlen in den Dateinamen.
  3. Wenn die Konsole eine Meldung zu Dateien in Assets/StreamingAssets/ enthält, prüfen Sie, ob es Konsolenmeldungen gibt, die besagen, dass Unity diese Dateien nicht bearbeiten konnte.
  4. Achten Sie darauf, dass Assets/StreamingAssets/google-services-desktop.json generiert wird und mit der heruntergeladenen Konfigurationsdatei übereinstimmt.
    • Wenn sie nicht automatisch generiert wird und StreamingAssets/ nicht vorhanden ist, erstellen Sie das Verzeichnis manuell im Verzeichnis Assets.
    • Prüfen Sie, ob Unity jetzt google-services-desktop.json generiert hat.

Achten Sie darauf, dass alle Firebase-Produkte und EDM4U ausschließlich über .unitypackage oder den Unity Package Manager installiert wurden

  1. Prüfen Sie sowohl den Ordner Assets/ als auch den Unity Package Manager, um sicherzustellen, dass Firebase SDKs und EDM4U ausschließlich mit einer der beiden Methoden installiert wurden.
  2. Einige von Google entwickelte Plug-ins wie Google Play und Plug-ins von Drittanbietern sind möglicherweise von EDM4U abhängig. Diese Plug-ins können EDM4U in ihren .unitypackages oder Unity Package Manager-Paketen (UPM) enthalten. Achten Sie darauf, dass in Ihrem Projekt nur eine Kopie von EDM4U vorhanden ist. Wenn UPM-Pakete von EDM4U abhängig sind, sollten Sie nur die UPM-Versionen von EDM4U behalten, die Sie auf der Archivseite für Google APIs for Unity finden.

Achten Sie darauf, dass alle Firebase-Produkte in Ihrem Projekt dieselbe Version haben.

  1. Wenn Firebase SDKs über .unitypackage installiert wurden, prüfen Sie, ob alle FirebaseCppApp-Bibliotheken unter Assets/Firebase/Plugins/x86_64/ dieselbe Version haben.
  2. Wenn Firebase SDKs über den Unity Package Manager (UPM) installiert wurden, öffnen Sie Windows > Package Manager, suchen Sie nach „Firebase“ und prüfen Sie, ob alle Firebase-Pakete dieselbe Version haben.
  3. Wenn Ihr Projekt verschiedene Versionen von Firebase SDKs enthält, empfehlen wir, alle Firebase SDKs vollständig zu entfernen, bevor Sie alle Firebase SDKs noch einmal installieren, diesmal mit denselben Versionen. Am besten entfernen Sie alle Firebase-Pakete mit den in diesem Migrationsabschnitt beschriebenen Methoden.

Build-Fehler bei Resolver und Zielgerät

Wenn Ihr Spiel im Editor funktioniert (konfiguriert für das entsprechende Build-Ziel Ihrer Wahl), prüfen Sie als Nächstes, ob der External Dependency Manager for Unity (EDM4U) richtig konfiguriert ist und funktioniert.

Das EDM4U-GitHub-Repository enthält eine Schritt-für-Schritt-Anleitung für diesen Teil des Prozesses, die Sie sich ansehen und befolgen sollten, bevor Sie fortfahren.

Probleme mit „Single Dex“ und Minimierung (erforderlich bei Verwendung von Cloud Firestore)

Beim Erstellen einer Android-App kann ein Build-Fehler auftreten, weil eine einzelne DEX-Datei vorhanden ist. 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.

.dex-Dateien enthalten eine Reihe von Klassendefinitionen und die zugehörigen Zusatzdaten für Android-Anwendungen. Eine einzelne DEX-Datei ist auf 65.536 Methoden beschränkt. Builds schlagen fehl,wenn die Gesamtzahl der Methoden aus allen Android-Bibliotheken in Ihrem Projekt dieses Limit überschreitet.

Die folgenden beiden Schritte können nacheinander ausgeführt werden. Aktivieren Sie Multidex nur, wenn das Problem durch die Minimierung nicht behoben wird.

Minimierung aktivieren

Unity hat 2017.2 die Minimierung eingeführt, 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 Settings > Android > Publishing Settings > Minify. * Die Optionen können in verschiedenen Versionen von Unity unterschiedlich sein. Informationen dazu finden Sie in der offiziellen Unity-Dokumentation.

Multidex aktivieren

Wenn die Anzahl der referenzierten Methoden nach dem Aktivieren der Minimierung immer noch das Limit überschreitet, können Sie auch multidex aktivieren. Dazu haben Sie in Unity mehrere Möglichkeiten:

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

Weitere Informationen finden Sie im Multidex-Nutzerhandbuch.

Laufzeitfehler auf dem Zielgerät verstehen und beheben

Wenn Ihr Spiel im Editor funktioniert und für Ihr Zielgerät erstellt und darauf installiert werden kann, aber Laufzeitfehler auftreten, prüfen Sie die auf dem Gerät generierten Logs.

In diesem Abschnitt wird erläutert, wie Sie Ihre Logs auf mögliche Fehler untersuchen und wie Sie einen solchen Fehler beheben, der nur zur Laufzeit auf dem Gerät oder im Simulator auftritt.

Android

Simulator

  • Prüfen Sie die Logs, die in der Konsole Ihres Emulators angezeigt werden, oder sehen Sie sich das Logcat-Fenster an.

Gerät

Machen Sie sich mit adb und adb logcat vertraut und erfahren Sie, wie Sie sie verwenden.

  • Sie können zwar die verschiedenen Tools Ihrer Befehlszeilenumgebung verwenden, um die Ausgabe zu filtern, aber Sie können sich auch die Optionen von Logcat ansehen.
  • Eine einfache Möglichkeit, eine ADB-Sitzung mit einem sauberen Zustand zu starten, ist:

    adb logcat -c && adb logcat <OPTIONS>

    Dabei sind OPTIONS die Flags, die Sie an die Befehlszeile übergeben, um die Ausgabe zu filtern.

Logcat über Android Studio verwenden

Wenn Sie Logcat über Android Studio verwenden, stehen zusätzliche Suchtools zur Verfügung, mit denen Sie produktive Suchanfragen einfacher erstellen können.

iOS

Logs prüfen

Wenn Sie ein physisches Gerät verwenden, schließen Sie es an Ihren Computer an. Prüfen Sie lldb in Xcode.

Swift-Probleme

Wenn Sie auf Fehlerlogs stoßen, in denen Swift erwähnt wird, lesen Sie den Abschnitt zum External Dependency Manager for Unity.

Weitere Schritte

Wenn in Ihrem Spiel weiterhin Kompilierungs-, Build- oder Laufzeitprobleme im Zusammenhang mit Firebase auftreten, sehen Sie sich die Seite mit Problemen mit dem Firebase SDK for Unity an und melden Sie gegebenenfalls ein neues Problem. Weitere Optionen finden Sie auf der Firebase Supportseite.