Перейти к основному содержимому

Устранение неполадок

Вылеты на Android и iOS

В некоторых случаях на Android и iOS во время выполнения могут происходить вылеты (например, при тестировании через TestFlight). Это вызвано конфликтом требований к выделению памяти используемой библиотеки llama.cpp с распределителями памяти Unreal Engine по умолчанию на этих платформах. На других платформах FMalloc по умолчанию использует ANSI-аллокатор, поэтому проблема проявляется только на Android и iOS.

Чтобы это исправить, необходимо принудительно использовать ANSI-аллокатор в файле Target.cs вашего проекта:

Для Unreal Engine 5.5 и более ранних версий:

  • Ваш проект должен использовать движок, собранный из исходного кода (а не предварительно скомпилированный бинарный)
  • Добавьте следующую строку в файл Target.cs:
GlobalDefinitions.Add("FORCE_ANSI_ALLOCATOR=1");

Для Unreal Engine 5.6 и более поздних версий:

  • Работает как с собранными из исходного кода, так и с предварительно скомпилированными сборками движка
  • Добавьте следующие две строки в ваш файл Target.cs:
bOverrideBuildEnvironment = true;
StaticAllocator = StaticAllocatorType.Ansi;

Это заставляет Unreal Engine использовать ANSI аллокатор на Android и iOS, соответствующий аллокатору, используемому llama.cpp.