トラブルシューティング
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以降の場合:
- ソースビルドとプリコンパイル済みの両方のエンジンビルドで動作します
- 以下の2行を
Target.csファイルに追加してください:
bOverrideBuildEnvironment = true;
StaticAllocator = StaticAllocatorType.Ansi;
これにより、Unreal Engine は Android および iOS 上で ANSI アロケータを使用するよう強制され、llama.cpp が使用するアロケータと一致します。