Fehlerbehebung & Häufig gestellte Fragen zu Unity und Firebase

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 unter Player Settings aktiviert ist, ändern Sie mainTemplate.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 das Assets/-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).

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)

  • Option 2: Weiterhin .unitypackage-Dateien verwenden, um sie in das Verzeichnis Assets/ zu importieren

    1. Importieren 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 richtigen dotnet-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.
    2. 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

Wenn Firebase-Pakete über UPM verwaltet werden, importieren Sie die neuere SDK-Version als .tgz. Dadurch wird die vorherige Version automatisch überschrieben.