Auf dieser Seite finden Sie Tipps und Informationen zur Fehlerbehebung für Unity-spezifische Probleme, die bei der Verwendung von Firebase auftreten können.
Sie haben andere Probleme oder können das unten beschriebene Problem nicht sehen? Weitere Firebase- oder produktspezifische FAQs finden Sie in den allgemeinen Firebase-FAQs.
Problem mit Single-DEX beim Erstellen einer Android-App
Beim Erstellen einer Android-App kann ein Build-Fehler auftreten, der mit einer einzelnen DEX-Datei zusammenhängt. 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.
Dalvik Executable-Dateien (.dex
) enthalten eine Reihe von Klassendefinitionen und die zugehörigen Zusatzdaten für Android-Anwendungen (.apk
). In einer einzelnen DEX-Datei können maximal 65.536 Methoden referenziert werden. Der Build schlägt fehl, wenn die Gesamtzahl der Methoden aus allen Android-Bibliotheken in Ihrem Projekt dieses Limit überschreitet.
Unity hat 2017.2 die Minifizierung eingeführt, bei der mit Proguard (oder anderen Tools in einigen Unity-Versionen) nicht verwendeter Code entfernt wird. 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 (Player-Einstellungen > Android > Veröffentlichungseinstellungen > Minimieren). Die Optionen können sich in verschiedenen Unity-Versionen unterscheiden. Sehen Sie daher in der offiziellen Unity-Dokumentation nach.
Wenn die Anzahl der referenzierten Methoden das Limit weiterhin überschreitet, können Sie auch multidex
aktivieren. Dazu haben Sie in Unity verschiedene Möglichkeiten:
- Wenn
Custom Gradle Template
unterPlayer Settings
aktiviert ist, ändern SiemainTemplate.gradle
. - Wenn Sie Android Studio zum Erstellen des exportierten Projekts verwenden, müssen Sie die
build.gradle
-Datei auf Modulebene ändern.
Weitere Informationen finden Sie im Nutzerhandbuch für Multidex.
Probleme beim Erstellen für Android mit minSdkVersion 23
Wenn Sie für Android entwickeln und minSdkVersion
23 als Ziel haben, kann der Dexing-Schritt fehlschlagen, in der Regel in der Gradle-Aufgabe „:launcher:mergeExtDexDebug“, wo es heißt, dass die Transformation einer der Android-Bibliotheken fehlgeschlagen ist. Dies liegt an einem Fehler im standardmäßigen Dex-Tool im Android SDK, das von den meisten Unity-Editoren verwendet wird. Das Problem kann auf verschiedene Arten behoben werden:
- Setzen Sie den Wert
minSdkVersion
auf 24. - Aktivieren Sie die Android-Minifizierung unter Player Settings > Android > Publishing Settings > Minify.
- Wenn Sie eine andere Version des dex-Tools angeben möchten, fügen Sie Folgendes in Ihre Datei
settingsTemplate.gradle
ein:
buildscript {
repositories {
mavenLocal()
maven { url 'https://maven.google.com' }
mavenCentral()
}
dependencies {
classpath 'com.android.tools:r8:8.3.37'
}
}
Probleme beim Erstellen für iOS mit CocoaPods
Beim Erstellen für iOS kann die Cocoapod-Installation mit einem Fehler bezüglich des Sprach-Locales oder der UTF-8-Codierung fehlschlagen. Derzeit gibt es mehrere Möglichkeiten, das Problem zu umgehen.
Führen Sie
pod install
direkt über das Terminal aus und öffnen Sie die resultierende xcworkspace-Datei.Führen Sie ein Downgrade der Version von CocoaPods auf 1.10.2 durch. Das Problem tritt nur in Version 1.11 und höher auf.
Fügen Sie in Ihrem
~/.bash_profile
oder einem entsprechenden Toolexport LANG=en_US.UTF-8
hinzu.
Versionen von Firebase Unity SDKs aktualisieren
Wie Sie die Versionen von Firebase Unity SDKs aktualisieren, hängt davon ab, wie sie ursprünglich importiert wurden. Hier sind die beiden alternativen Importmethoden:
.unitypackage
-Dateien imAssets/
-Verzeichnis Ihres Projekts importieren- Importieren über den Unity Package Manager (UPM)
- Dies ist die empfohlene Methode zum Verwalten von Paketen in Unity 2018.4 und höher.
- Mit dieser Methode werden zukünftige Versionsupdates vereinfacht und das
Assets/
-Verzeichnis wird übersichtlicher.
In Ihrem Unity-Projekt sollten Sie nur eine Importmethode verwenden, um alle Ihre Firebase-Pakete zu verwalten. Mit der folgenden Anleitung können Sie nicht nur die Version einzelner Pakete aktualisieren, sondern bei Bedarf auch die Paketverwaltung auf UPM (die empfohlene Importmethode) migrieren.
Als .unitypackage
-Dateien in das Verzeichnis Assets/
importierte Pakete
Wenn sich Firebase-Pakete im Verzeichnis Assets/
befinden, haben Sie zwei Möglichkeiten, die SDK-Version zu aktualisieren:
Option 1 (empfohlen): Migration zur Verwendung von UPM (verfügbar in Unity 2018.4 und höher)
- Folgen Sie der Anleitung von Firebase zur Migration der Paketverwaltung zu UPM.
- Diese Methode erfordert zwar mehr Einrichtung als die weitere Verwendung des
.unitypackage
-Workflows, zahlt sich aber bei späteren SDK-Versionsupdates aus.
Option 2: Weiterhin
.unitypackage
-Dateien verwenden, um sie in das VerzeichnisAssets/
zu importierenImportieren Sie jedes der Pakete für die aktualisierte Version.
Wenn Sie firebase_unity_sdk.zip von der Firebase-Website herunterladen, müssen Sie alle
.unitypackages
aus dem richtigendotnet
-Ordner importieren.- Wenn Sie Unity 2019 oder höher verwenden, importieren Sie die Assets aus dem Ordner
dotnet4
. - Wählen Sie andernfalls in den Playereinstellungen die Scripting Runtime Version aus. Wenn sie auf „.NET 3.x“ festgelegt ist, importieren Sie aus dem Ordner
dotnet3
.
- Wenn Sie Unity 2019 oder höher verwenden, importieren Sie die Assets aus dem Ordner
Das Überschreiben der zuvor importierten Paketversionen sollte automatisch vom External Dependency Manager übernommen werden, der automatisch enthalten ist, wenn Sie das Firebase-
.unitypackages
importieren.Wenn dieser automatische Vorgang jedoch fehlschlägt, müssen Sie die folgenden Ordner manuell löschen und den oben genannten Importschritt noch einmal ausführen.
Assets/Editor Default Resources/Firebase
Assets/ExternalDependencyManager
Assets/Firebase
Assets/Parse
Assets/Plugins/iOS/Firebase
Von UPM verwaltete Pakete
Wenn Firebase-Pakete von UPM verwaltet werden, importieren Sie die neuere SDK-Version als .tgz
.
Beim Import wird die vorherige Version automatisch überschrieben.