Solución de problemas
Bloqueos en Android y iOS
En algunos casos en Android y iOS, pueden ocurrir fallos durante la ejecución (como durante las pruebas en TestFlight). Esto se debe a que los requisitos de asignación de memoria de la biblioteca subyacente llama.cpp entran en conflicto con los asignadores predeterminados de Unreal Engine en estas plataformas. En otras plataformas, FMalloc utiliza por defecto el asignador ANSI, por lo que este problema es específico de Android y iOS.
Para resolver esto, debes forzar el asignador ANSI en el archivo Target.cs de tu proyecto:
Para Unreal Engine 5.5 y versiones anteriores:
- Su proyecto debe usar un motor compilado desde el código fuente (no un binario precompilado)
- Agregue la siguiente línea a su archivo
Target.cs:
GlobalDefinitions.Add("FORCE_ANSI_ALLOCATOR=1");
Para Unreal Engine 5.6 y versiones posteriores:
- Funciona tanto con compilaciones del motor desde el código fuente como con compilaciones precompiladas
- Agrega las siguientes dos líneas a tu archivo
Target.cs:
bOverrideBuildEnvironment = true;
StaticAllocator = StaticAllocatorType.Ansi;
Esto obliga a Unreal Engine a usar el asignador ANSI en Android y iOS, coincidiendo con el asignador utilizado por llama.cpp.