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.
Problem mit Single Dex beim Erstellen einer Android-App
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, wenn Ihr Projekt für die Verwendung des Gradle-Build-Systems konfiguriert ist.
Cannot fit requested classes in a single dex file.
In Dalvik-Ausführbaren (.dex
) werden eine Reihe von Klassendefinitionen und die zugehörigen Zusatzdaten für Android-Anwendungen (.apk
) gespeichert. Eine einzelne dex-Datei kann nur auf 65.536 Methoden verweisen. Der Build schlägt fehl, wenn die Gesamtzahl der Methoden aus allen Android-Bibliotheken in Ihrem Projekt dieses Limit überschreitet.
In Unity 2017.2 wurde die Minimierung eingeführt. Dabei wird mit Proguard (oder anderen Tools in einigen Versionen von Unity) nicht verwendeter Code entfernt, wodurch sich die Gesamtzahl der referenzierten Methoden in einer einzelnen dex-Datei reduzieren lässt. Sie finden die Option unter Player-Einstellungen > Android > Einstellungen für die Veröffentlichung > Minimieren. Die Optionen können sich in verschiedenen Unity-Versionen unterscheiden. Weitere Informationen finden Sie in der offiziellen Unity-Dokumentation.
Wenn die Anzahl der referenzierten Methoden das Limit weiterhin überschreitet, können Sie multidex
aktivieren. In Unity gibt es dafür mehrere Möglichkeiten:
- Wenn
Custom Gradle Template
unterPlayer Settings
aktiviert ist, ändern SiemainTemplate.gradle
. - Wenn Sie das exportierte Projekt mit Android Studio erstellen, ändern Sie die
build.gradle
-Datei auf Modulebene.
Weitere Informationen finden Sie im Multidex-Nutzerhandbuch.
Probleme beim Erstellen für Android mit minSdkVersion 23
Wenn Sie beim Erstellen für Android minSdkVersion
23 als Ziel auswählen, schlägt der De-Xing-Schritt möglicherweise fehl, in der Regel bei der Gradle-Aufgabe „:launcher:mergeExtDexDebug“. Dort wird angezeigt, dass die Umwandlung einer der Android-Bibliotheken fehlgeschlagen ist. Das Problem wird durch einen Fehler im Standard-Dex-Tool im Android SDK verursacht, das von den meisten Unity-Editoren verwendet wird. Es kann auf verschiedene Arten behoben werden:
- Legen Sie den Wert
minSdkVersion
auf 24 fest. - Aktiviere die Minimierung für Android unter Player-Einstellungen > Android > Einstellungen für die Veröffentlichung > Minimieren.
- Geben Sie eine andere Version des dex-Tools an, indem Sie Folgendes in die Datei
settingsTemplate.gradle
einfügen:
buildscript {
repositories {
mavenLocal()
maven { url 'https://maven.google.com' }
mavenCentral()
}
dependencies {
classpath 'com.android.tools:r8:8.3.37'
}
}
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. Es gibt derzeit mehrere Möglichkeiten, das Problem zu umgehen.
Führen Sie
pod install
direkt im Terminal aus und öffnen Sie die 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 auf.
Fügen Sie
export LANG=en_US.UTF-8
zu~/.bash_profile
oder einem ähnlichen Wert hinzu.
Version des Firebase Unity SDKs aktualisieren
Wie Sie die Versionen der Firebase Unity SDKs aktualisieren, hängt davon ab, wie sie ursprünglich importiert wurden. Hier sind die beiden alternativen Importmethoden:
.unitypackage
-Dateien in dasAssets/
-Verzeichnis Ihres Projekts importieren- Importieren mit dem Unity Package Manager (UPM)
- Dies ist die empfohlene Methode zum Verwalten von Paketen in Unity 2018.4 und höher.
- Mit dieser Methode lassen sich zukünftige Versionsupdates einfacher durchführen und Ihr
Assets/
-Verzeichnis wird aufgeräumt.
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).
Pakete, die als .unitypackage
-Dateien in das Verzeichnis Assets/
importiert wurden
Wenn sich Firebase-Pakete im Verzeichnis Assets/
befinden, haben Sie zwei Möglichkeiten, die SDK-Version zu aktualisieren:
Option 1 (empfohlen): Migration zu 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 Einrichtungsaufwand als die Weiterverwendung des Workflows
.unitypackage
, zahlt sich aber durch die einfache Durchführung nachfolgender SDK-Versionsupdates aus.
Option 2: Weiterhin
.unitypackage
-Dateien verwenden, um sie in das VerzeichnisAssets/
zu importierenImportieren Sie alle Pakete für die aktualisierte Version.
Wenn Sie firebase_unity_sdk.zip von der Firebase-Website herunterladen, achten Sie darauf, alle
.unitypackages
aus dem richtigendotnet
-Ordner zu importieren.- Wenn Sie Unity 2019 oder höher verwenden, importieren Sie aus dem Ordner
dotnet4
. - Wähle andernfalls in den Player-Einstellungen die Option Scripting Runtime Version aus. Wenn dort „.NET 3.x“ festgelegt ist, importiere aus dem Ordner
dotnet3
.
- Wenn Sie Unity 2019 oder höher verwenden, importieren Sie aus dem Ordner
Das Überschreiben der zuvor importierten Paketversionen sollte automatisch vom External Dependency Manager (der beim Importieren der Firebase-
.unitypackages
automatisch enthalten ist) verwaltet werden.NUR wenn dieser automatische Vorgang fehlschlägt, müssen Sie die folgenden Ordner manuell löschen und den obigen Importschritt noch einmal wiederholen.
Assets/Editor Default Resources/Firebase
Assets/ExternalDependencyManager
Assets/Firebase
Assets/Parse
Assets/Plugins/iOS/Firebase
Von UPM verwaltete Pakete
Wenn Firebase-Pakete über UPM verwaltet werden, importieren Sie die neuere SDK-Version als .tgz
.
Dadurch wird die vorherige Version automatisch überschrieben.