Einführung
Im Folgenden finden Sie eine Anleitung zum Debuggen des Kompilierungs- und Erstellungsprozesses für Unity-Spiele mithilfe des Firebase SDK für Unity. Es beschreibt, wie Sie viele der häufigsten Probleme untersuchen und lösen, die beim Konfigurieren und Erstellen Ihres Spiels für eine neue Plattform oder nach einem Update auftreten können. Die Reihenfolge ist geordnet, wann diese Fehler im Prozess auftreten können. Konsultieren Sie sie der Reihe nach und fahren Sie fort, sobald die einzelnen Probleme gelöst sind.
Weitere Informationen finden Sie zusätzlich zu diesem Dokument in den FAQ zu Firebase for Unity .
Probleme bei der Kompilierung des Wiedergabemodus
Die erste Klasse von Build-Problemen kann beim Testen im Editor auftreten, bevor Sie versuchen, einen mobilen Build zu starten. Dieser Abschnitt betrifft 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, versucht es, das Projekt neu zu erstellen. Wenn das Projekt zu diesem Zeitpunkt nicht kompiliert werden kann, protokolliert der Editor Kompilierungsfehler in der Konsole und wenn Sie versuchen, in den Wiedergabemodus zu wechseln, wird auf der Registerkarte „ Szene “ von Unity ein Fehler-Popup mit der Meldung All compiler errors have to be fixed before you can enter playmode!
angezeigt All compiler errors have to be fixed before you can enter playmode!
.
Debuggen von Firebase-bezogenen Kompilierungsproblemen
Fehlende Typen, Klassen, Methoden und Member
Viele Firebase-Probleme treten auf, weil der Editor und der Compiler nicht in der Lage sind, die erforderlichen Typen, Klassen, Methoden und Mitglieder zu finden. Häufige Symptome hierfür sind Varianten der folgenden:
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:
Wenn Sie Firebase-Klassen oder -Methoden im Code verwenden, stellen Sie sicher, dass Sie diese verfügbar machen, indem Sie über die richtigen
using
Anweisungen für die jeweils benötigten Firebase-Produkte verfügen.Stellen Sie sicher, dass Sie die entsprechenden Firebase-Pakete importiert haben:
- Um die entsprechenden Pakete zu importieren, gehen Sie entweder wie folgt vor:
- Fügen Sie das Firebase Unity SDK als
.unitypackage
s oder hinzu - Sehen Sie sich eine der Alternativen unter „Zusätzliche Unity-Installationsoptionen“ an und führen Sie sie aus.
- Fügen Sie das Firebase Unity SDK als
- Stellen Sie sicher, dass jedes Firebase-Produkt in Ihrem Projekt und EDM4U :
- Sind bei der gleichen Version
- Wurden entweder ausschließlich als
.unitypackage
ODER ausschließlich über den Unity Package Manager installiert.
- Um die entsprechenden Pakete zu importieren, gehen Sie entweder wie folgt vor:
Wenn Sie das Firebase Unity SDK vor Version „10.0.0“ als
.unitypackage
s importiert haben, enthält das Firebase Unity SDK-Zip-Archiv Pakete für die Unterstützung von .NET 3.x und .NET 4.x. Stellen Sie sicher, dass Sie nur die kompatible .NET Framework-Version in Ihr Projekt eingebunden haben:- Die Kompatibilität zwischen Versionen des Unity-Editors und der .NET Frameworks-Ebenen wird unter Hinzufügen von Firebase zu Ihrem Unity-Projekt erläutert.
- Wenn Sie Ihre Firebase-Pakete versehentlich auf der falschen .NET Framework-Ebene importiert haben oder von der Verwendung
.unitypackage
auf eine der zusätzlichen Unity-Installationsoptionen umsteigen müssen, ist es am saubersten, jedes Firebase-Paket mit den in diesem Migrationsabschnitt genannten Methoden zu entfernen Importieren Sie dann alle Firebase-Pakete erneut.
Überprüfen Sie, ob Ihr Editor Ihr Projekt neu erstellt und ob Ihre Wiedergabeversuche den aktuellsten Stand Ihres Projekts widerspiegeln:
- Standardmäßig ist der Unity-Editor so eingestellt, dass er immer dann neu erstellt, wenn Asset- oder Konfigurationsänderungen erkannt werden.
- Möglicherweise wurde diese Funktionalität deaktiviert und der Unity-Editor ist auf manuelle Aktualisierung/Neukompilierung eingestellt. Untersuchen Sie dies und versuchen Sie in diesem Fall eine manuelle Aktualisierung.
Laufzeitfehler im Wiedergabemodus
Wenn Ihr Spiel startet, beim Ausführen jedoch Probleme mit Firebase auftreten, versuchen Sie Folgendes:
Stellen Sie sicher, dass Sie Firebase-Bundles unter „Sicherheit und Datenschutz“ unter Mac OS genehmigen
Wenn Ihnen beim Starten Ihres Spiels im Editor unter Mac OS ein Dialog 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 genehmigen Mac-Menü „Sicherheit und Datenschutz“.
Klicken Sie dazu auf das Apple-Symbol > Systemeinstellungen > Sicherheit und Datenschutz
Im Sicherheitsmenü, etwa in der Mitte der Seite, gibt es einen 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 zulassen“ .
Gehen Sie zurück zu Unity und drücken Sie erneut die Wiedergabetaste .
Anschließend wird eine Warnung ähnlich der ersten angezeigt:
Klicken Sie auf „Öffnen“ und Ihr Programm kann fortfahren; Sie werden nicht erneut nach dieser bestimmten Datei gefragt.
Stellen Sie sicher, dass Ihr Projekt gültige Konfigurationsdateien enthält und verwendet
- Stellen Sie sicher, dass Ihre Build-Einstellungen unter Datei > Build-Einstellungen für das gewünschte Ziel (iOS oder Android) festgelegt sind. Eine ausführlichere Diskussion finden Sie in der Dokumentation zu den Unity Build-Einstellungen .
- Laden Sie die Konfigurationsdatei für Ihre App herunter (
google-services.json
für Android oderGoogleService-Info.plist
für iOS) und erstellen Sie das Ziel in der Firebase-Konsole unter Projekteinstellungen > Ihre Apps : Wenn Sie diese Dateien bereits haben, löschen Sie sie in Ihrem Projekt und ersetzen Sie sie durch die neueste Version. Stellen Sie dabei sicher, dass sie genau wie oben angezeigt geschrieben sind, ohne „(1)“ oder andere an die Dateinamen angehängte Zahlen. - Wenn die Konsole eine Meldung zu Dateien in
Assets/StreamingAssets/
enthält, stellen Sie sicher, dass keine Konsolenmeldungen vorhanden sind, die besagen, dass Unity die Dateien dort nicht bearbeiten konnte - Stellen Sie sicher
Assets/StreamingAssets/google-services-desktop.json
generiert wird und mit der heruntergeladenen Konfigurationsdatei übereinstimmt.- Wenn es nicht automatisch generiert wird und
StreamingAssets/
nicht vorhanden ist, erstellen Sie das Verzeichnis manuell imAssets
Verzeichnis. - Überprüfen Sie, ob Unity jetzt
google-services-desktop.json
generiert hat.
- Wenn es nicht automatisch generiert wird und
Stellen Sie sicher, dass jedes Firebase-Produkt und EDM4U ausschließlich über .unitypackage
oder den Unity Package Manager installiert wurden
- Überprüfen Sie sowohl den Ordner
Assets/
als auch den Unity Package Manager, um sicherzustellen, dass Firebase SDKs und EDM4U ausschließlich über die eine oder andere Methode installiert wurden. - Einige von Google entwickelte Plugins wie Google Play und Plugins von Drittanbietern hängen möglicherweise von EDM4U ab. Diese Plugins können EDM4U in ihren
.unitypackage
oder Unity Package Manager (UPM)-Paketen enthalten. Stellen Sie sicher, dass Ihr Projekt nur eine Kopie von EDM4U enthält. Wenn UPM-Pakete von EDM4U abhängen, behalten Sie am besten nur die UPM-Versionen von EDM4U bei, die Sie auf der Seite „Google APIs für Unity-Archiv“ finden.
Stellen Sie sicher, dass jedes Firebase-Produkt in Ihrem Projekt dieselbe Version hat.
- Wenn Firebase SDKs über
.unitypackage
installiert wurden, prüfen Sie, ob alleFirebaseCppApp
Bibliotheken unterAssets/Firebase/Plugins/x86_64/
dieselbe Version haben. - Wenn Firebase SDKs über Unity Package Manager (UPM) installiert wurden, öffnen Sie Windows > Paketmanager , suchen Sie nach „Firebase“ und stellen Sie sicher, dass alle Firebase-Pakete dieselbe Version haben.
- Wenn Ihr Projekt verschiedene Versionen von Firebase SDKs enthält, empfehlen wir Ihnen, alle Firebase SDKs vollständig zu entfernen, bevor Sie alle Firebase SDKs erneut installieren, dieses Mal mit denselben Versionen. Der sauberste Weg besteht darin, jedes Firebase-Paket mit den in diesem Migrationsabschnitt genannten Methoden zu entfernen.
Fehler beim Erstellen des Resolvers und des Zielgeräts
Wenn Ihr Spiel im Editor funktioniert (konfiguriert für das entsprechende Build-Ziel Ihrer Wahl), überprüfen Sie als Nächstes, ob der External Dependency Manager für Unity (EDM4U) ordnungsgemäß konfiguriert ist und funktioniert.
Das EDM4U-GitHub-Repository enthält eine Schritt-für-Schritt-Anleitung für diesen Teil des Prozesses, die Sie lesen und befolgen sollten, bevor Sie fortfahren.
„Single Dex“-Probleme und Minimierung ( obligatorisch bei Verwendung von Cloud Firestore)
Beim Erstellen einer Android-App kann es zu einem Buildfehler kommen, der auf eine einzelne Dex-Datei zurückzuführen ist. Die Fehlermeldung sieht etwa wie folgt 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 werden verwendet, um eine Reihe von Klassendefinitionen und die zugehörigen Zusatzdaten für Android-Anwendungen zu speichern. Eine einzelne Dex-Datei darf nur auf 65.536 Methoden verweisen. Builds schlagen fehl, wenn die Gesamtzahl der Methoden aus allen Android-Bibliotheken in Ihrem Projekt diesen Grenzwert überschreitet.
Die folgenden zwei Schritte können nacheinander angewendet werden; Aktivieren Sie Multidex nur, wenn die Minimierung das Problem nicht löst.
Minimierung aktivieren
Unity führte 2017.2 die Minifizierung ein, 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 in verschiedenen Unity-Versionen unterschiedlich sein. Weitere Informationen finden Sie in der offiziellen Unity-Dokumentation.
Aktivieren Sie Multidex
Wenn nach der Aktivierung der Minifizierung die Anzahl der referenzierten Methoden immer noch den Grenzwert überschreitet, besteht eine weitere Möglichkeit darin, multidex
zu aktivieren. In Unity gibt es mehrere Möglichkeiten, dies zu erreichen:
- Wenn „Benutzerdefinierte Gradle-Vorlage“ unter „Player-Einstellungen“ aktiviert ist, ändern Sie
mainTemplate.gradle
. - Wenn Sie Android Studio zum Erstellen des exportierten Projekts verwenden, ändern Sie die Datei build.gradle auf Modulebene.
Weitere Details finden Sie im Multidex-Benutzerhandbuch .
Laufzeitfehler des Zielgeräts verstehen und beheben
Wenn Ihr Spiel im Editor funktioniert und für Ihr Zielgerät erstellt und dort installiert werden kann, Sie jedoch auf Laufzeitfehler stoßen, überprüfen und untersuchen Sie die auf dem Gerät generierten Protokolle .
In diesem Abschnitt wird erläutert, wie Sie Ihre Protokolle auf mögliche Fehler und einen solchen Fehler untersuchen, der nur zur Laufzeit auf dem Gerät oder Simulator auftritt.
Android
Simulator
- Überprüfen Sie die in der Konsole Ihres Emulators angezeigten Protokolle oder sehen Sie sich das Logcat- Fenster an.
Gerät
Machen Sie sich mit ADB und ADB Logcat und deren Verwendung vertraut.
- Während Sie die verschiedenen Tools Ihrer Befehlszeilenumgebung zum Filtern der Ausgabe verwenden können, sollten Sie alternativ einen Blick auf die Optionen von logcat werfen.
Eine einfache Möglichkeit, eine ADB-Sitzung mit einem sauberen Slate zu starten, ist:
adb logcat -c && adb logcat <OPTIONS>
Dabei sind
OPTIONS
die Flags, die Sie der Befehlszeile übergeben, um die Ausgabe zu filtern.
Verwenden von Logcat über Android Studio
Bei der Verwendung von Logcat über Android Studio stehen zusätzliche Suchtools zur Verfügung , die die Generierung produktiver Suchen einfacher machen.
iOS
Protokolle prüfen
Wenn Sie ein physisches Gerät betreiben, schließen Sie es an Ihren Computer an. Untersuchen Sie lldb in Xcode.
Schnelle Probleme
Wenn Sie auf Fehlerprotokolle stoßen, in denen Swift erwähnt wird, lesen Sie hierzu den Abschnitt „Externer Abhängigkeitsmanager für Unity“ .
Weitere Schritte
Wenn bei Ihrem Spiel immer noch Probleme beim Kompilieren, Erstellen oder Ausführen im Zusammenhang mit Firebase auftreten, sehen Sie sich die Seite „Firebase SDK for Unity-Probleme“ an und überlegen Sie, ein neues Problem einzureichen. Weitere Informationen zu weiteren Optionen finden Sie außerdem auf der Firebase- Supportseite .