Zum Hauptinhalt springen

Fehlerbehebung

Android- und iOS-Abstürze

In einigen Fällen auf Android und iOS kann es während der Laufzeit zu Abstürzen kommen (z. B. während TestFlight-Tests). Dies wird dadurch verursacht, dass die Speicherzuweisungsanforderungen der zugrunde liegenden llama.cpp-Bibliothek mit den Standard-Allokatoren der Unreal Engine auf diesen Plattformen in Konflikt geraten. Auf anderen Plattformen verwendet FMalloc standardmäßig den ANSI-Allokator, daher tritt dieses Problem nur auf Android und iOS auf.

Um dies zu beheben, müssen Sie den ANSI-Allokator in der Target.cs-Datei Ihres Projekts erzwingen:

Für Unreal Engine 5.5 und früher:

  • Ihr Projekt muss eine aus dem Quellcode erstellte Engine verwenden (keine vorkompilierte Binärdatei)
  • Fügen Sie die folgende Zeile zu Ihrer Target.cs-Datei hinzu:
GlobalDefinitions.Add("FORCE_ANSI_ALLOCATOR=1");

Für Unreal Engine 5.6 und höher:

  • Funktioniert sowohl mit quellbasierten als auch mit vorkompilierten Engine-Builds
  • Fügen Sie die folgenden zwei Zeilen zu Ihrer Target.cs-Datei hinzu:
bOverrideBuildEnvironment = true;
StaticAllocator = StaticAllocatorType.Ansi;

Dies zwingt Unreal Engine, den ANSI-Allokator auf Android und iOS zu verwenden, der mit dem von llama.cpp verwendeten Allokator übereinstimmt.