跳到主要内容

troubleshooting

疑难解答

Android 和 iOS 崩溃

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

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

针对 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 在 Android 和 iOS 上使用 ANSI 分配器,与 llama.cpp 使用的分配器相匹配。