跳至主要内容

疑難排解

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 所使用的分配器。