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

Einführung

Im Folgenden finden Sie eine Anleitung zum Debuggen des Kompilierungs- und Build-Prozesses für Unity-Spiele mit dem Firebase SDK für Unity. Sie erfahren, wie Sie viele der häufigsten Probleme untersuchen und beheben können, die bei der Konfiguration und Entwicklung Ihres Spiels für eine neue Plattform oder nach einem Update auftreten können. Sie sind in der Reihenfolge angeordnet, wann diese Fehler im Prozess auftreten können. Beantworte die Fragen der Reihe nach und fahre fort, sobald alle Probleme gelöst sind.

Weitere Informationen finden Sie in den FAQs zu Firebase for Unity.

Probleme beim Kompilieren im Wiedergabemodus

Die erste Art von Build-Problemen kann beim Testen im Editor auftreten, bevor Sie versuchen, einen mobilen Build zu starten. Dieser Abschnitt bezieht sich auf alle Firebase-Fehler, die vor und während des Play-Modus 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, werden im Editor Kompilierungsfehler in der Konsole protokolliert. Wenn Sie versuchen, den Wiedergabemodus aufzurufen, wird auf dem Tab Szene in Unity ein Pop-up-Fenster mit der Fehlermeldung All compiler errors have to be fixed before you can enter playmode! angezeigt.

Fehlende Typen, Klassen, Methoden und Mitglieder

Viele Firebase-Probleme treten auf, wenn Editor und Compiler die erforderlichen Typen, Klassen, Methoden und Mitglieder nicht finden können. Häufige Symptome sind Varianten von Folgendem:

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 diese mithilfe der richtigen using-Anweisungen für die jeweiligen erforderlichen Firebase-Produkte verfügbar machen.

    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üge das Firebase Unity SDK als .unitypackages hinzu oder
      2. Sehen Sie sich die zusätzlichen Installationsoptionen für Unity an und führen Sie eine davon aus.
    2. Achten Sie darauf, dass jedes Firebase-Produkt in Ihrem Projekt und EDM4U:
      • haben dieselbe Version
      • Wurden entweder exklusiv als .unitypackages ODER exklusiv ü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 sowohl Pakete für .NET 3.x als auch für .NET 4.x. Achten Sie darauf, dass Sie in Ihrem Projekt nur die kompatible .NET Framework-Ebene eingeschlossen haben:

    1. Informationen zur Kompatibilität zwischen Versionen des Unity-Editors und .NET-Frameworks finden Sie unter Firebase zu einem Unity-Projekt hinzufügen.
    2. Wenn Sie Ihre Firebase-Pakete versehentlich auf dem falschen .NET Framework-Level importiert haben oder von .unitypackage zu einer der Zusätzlichen Unity-Installationsoptionen wechseln müssen, ist es am einfachsten, alle Firebase-Pakete mit den in diesem Migrationsbereich beschriebenen Methoden zu entfernen und dann alle Firebase-Pakete noch einmal zu importieren.
  4. Prüfen Sie, ob Ihr Projekt im Editor neu erstellt wird und ob Ihre Wiedergabeversuche den aktuellen Status Ihres Projekts widerspiegeln:

    1. Standardmäßig wird der Unity-Editor so konfiguriert, dass er neu erstellt wird, wenn Asset- oder Konfigurationsänderungen erkannt werden.
    2. Möglicherweise wurde diese Funktion deaktiviert und der Unity-Editor ist auf Manuelle Aktualisierung/Neukompilierung eingestellt. Prüfen Sie dies und versuchen Sie gegebenenfalls, die Daten manuell zu aktualisieren.

Wiedergabemodus-Laufzeitfehler

Wenn Ihr Spiel gestartet wird, aber während der Ausführung Probleme mit Firebase auftreten, versuchen Sie Folgendes:

Firebase-Bundles unter „Sicherheit und Datenschutz“ auf Mac OS genehmigen

Wenn beim Starten Ihres Spiels im Editor unter Mac OS das Dialogfeld „FirebaseCppApp-<Version>.bundle kann nicht geöffnet werden, weil der Entwickler nicht verifiziert werden kann“ angezeigt wird, müssen Sie diese Bundle-Datei in Mac OS Security & Menü „Datenschutz“.

Klicke dazu auf das Apple-Symbol > Systemeinstellungen > Sicherheit und Datenschutz

Etwa auf der Hälfte der Seite im Menü „Sicherheit“ befindet sich der Bereich „FirebaseCppApp-<Version>.bundle“. wurde blockiert, da sie nicht von einem identifizierten Entwickler stammt."

Klicken Sie auf die Schaltfläche Trotzdem zulassen.

c35166e224cce720.png

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

Es wird dann eine Warnung angezeigt, die der ersten ähnelt:

5ad9ddb0d3a52892.png

Drücken Sie auf Öffnen, damit das Programm fortfahren kann. Sie werden nicht noch einmal nach dieser Datei gefragt.

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

  1. Achten Sie darauf, dass Ihre Build-Einstellungen unter Datei > Build-Einstellungen für das gewünschte Ziel (iOS oder Android) festgelegt sind. Eine ausführlichere Erläuterung finden Sie in der Dokumentation zu Unity-Build-Einstellungen.
  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 aus 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 die Dateinamen genau wie oben angegeben sind, ohne „(1)“ oder andere Zahlen.
  3. Wenn die Konsole eine Meldung zu Dateien in Assets/StreamingAssets/ enthält, prüfen Sie, ob keine Konsolenmelden angezeigt werden, dass Unity dort keine Dateien bearbeiten konnte.
  4. Prüfen Sie, ob Assets/StreamingAssets/google-services-desktop.json generiert wurde und mit der heruntergeladenen Konfigurationsdatei übereinstimmt.
    • Wenn es 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-Produkte ausschließlich über .unitypackage oder den Unity Package Manager installiert wurden

  1. Prüfen Sie sowohl den Ordner Assets/ als auch den Unity-Paketmanager, um sicherzustellen, dass die Firebase SDKs und EDM4U ausschließlich über eine 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 .unitypackage- oder Unity Package Manager-Paketen (UPM) enthalten. Achten Sie darauf, dass sich in Ihrem Projekt nur eine Kopie von EDM4U befindet. Wenn bestimmte UPM-Pakete von EDM4U abhängen, sollten Sie nur die UPM-Versionen von EDM4U behalten. Diese finden Sie auf der Seite Google APIs for Unity Archive.

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 Unity Package Manager (UPM) installiert wurden, öffnen Sie Windows > Paketmanager: Suchen Sie nach „Firebase“. und dafür zu sorgen, dass 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. Die sauberste Methode besteht darin, alle Firebase-Pakete mithilfe der Methoden zu entfernen, die in diesem Migrationsabschnitt beschrieben werden.

Resolver- und Zielgeräte-Build-Fehler

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

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

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

Beim Erstellen einer Android-App kann ein Buildfehler auftreten, der auf eine einzelne dex-Datei zurückzuführen ist. Die Fehlermeldung sieht in etwa so aus (sofern 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-Apps. Eine einzelne dex-Datei kann nur auf 65.536 Methoden verweisen. 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 angewendet werden. Aktivieren Sie Multidex nur, wenn das Problem durch die Minimierung nicht behoben wird.

Reduzierung aktivieren

In Unity 2017.2 wurde die Minifizierung eingeführt, um nicht verwendeten Code zu entfernen. Dadurch kann die Gesamtzahl der referenzierten Methoden in einer einzelnen dex-Datei reduziert werden. * Die Option befindet sich unter Player-Einstellungen > Android > Veröffentlichungseinstellungen > Komprimieren. * Die Optionen können sich in verschiedenen Unity-Versionen unterscheiden. Weitere Informationen finden Sie in der offiziellen Unity-Dokumentation.

Multidex aktivieren

Wenn die Anzahl der referenzierten Methoden nach der Minimierung immer noch das Limit überschreitet, können Sie auch multidex aktivieren. In Unity gibt es mehrere Möglichkeiten, dies zu tun:

  • Wenn Benutzerdefinierte Gradle-Vorlage unter Player-Einstellungen aktiviert ist, ändern Sie mainTemplate.gradle.
  • Wenn Sie das exportierte Projekt mit Android Studio erstellen, ändern Sie die Datei build.gradle auf Modulebene.

Weitere Informationen finden Sie im Multidex-Nutzerhandbuch.

Laufzeitfehler der Zielgeräte verstehen und beheben

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

In diesem Abschnitt wird erläutert, wie Sie Ihre Protokolle auf mögliche Fehler prüfen und wie ein solcher Fehler nur zur Laufzeit auf dem Gerät oder im Simulator auftritt.

Android

Simulator

  • Sehen Sie sich die Logs an, die in der Konsole des Emulators angezeigt werden, oder öffnen Sie das Fenster Logcat.

Gerät

Machen Sie sich mit adb und adb logcat und ihrer Verwendung vertraut.

  • Sie können die verschiedenen Tools Ihrer Befehlszeilenumgebung zum Filtern der Ausgabe verwenden. Alternativ können Sie sich auch die Optionen von Logcat ansehen.
  • So starten Sie eine ADB-Sitzung mit einem sauberen Start:

    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 Ihnen zusätzliche Suchtools zur Verfügung, mit denen sich produktive Suchanfragen einfacher erstellen lassen.

iOS

Protokolle prüfen

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

Swift-Probleme

Wenn Sie auf Fehlerprotokolle stoßen, in denen Swift erwähnt wird, lesen Sie den Abschnitt External Dependency Manager for Unity (Externer Abhängigkeitsmanager für Unity).

Nächste Schritte

Wenn bei Ihrem Spiel weiterhin Probleme beim Kompilieren, Erstellen oder Ausführen im Zusammenhang mit Firebase auftreten, sehen Sie sich die Seite mit Problemen des Firebase SDK für Unity an und erwägen Sie, ein neues Problem zu melden. Informationen zu weiteren Optionen finden Sie auf der Firebase-Supportseite.