跳到主要内容

故障排除

Android 和 iOS 崩溃问题

在某些Android和iOS设备上,运行时(例如TestFlight测试期间)可能发生崩溃。这是由于底层llama.cpp库的内存分配需求与这些平台上Unreal Engine的默认分配器存在冲突。在其他平台上,FMalloc默认使用ANSI分配器,因此该问题仅出现在Android和iOS上。

要解决此问题,您需要在项目的 Target.cs 文件中强制使用 ANSI 分配器:

适用于虚幻引擎 5.5 及更早版本:

  • 您的项目必须使用源码构建的引擎(而非预编译的二进制文件)
  • 在您的 Target.cs 文件中添加以下代码行:
GlobalDefinitions.Add("FORCE_ANSI_ALLOCATOR=1");

适用于虚幻引擎5.6及更高版本:

  • 适用于源码构建和预编译引擎构建
  • 在您的 Target.cs 文件中添加以下两行代码:
bOverrideBuildEnvironment = true;
StaticAllocator = StaticAllocatorType.Ansi;

这会强制 Unreal Engine 在 Android 和 iOS 上使用 ANSI 分配器,以匹配 llama.cpp 所使用的分配器。