当前位置: 首页 > web >正文

UE5.5构建iOS失败但没有显式错误信息的问题

报错信息如下

UnrealBuildTool failed. See log for more details. (/Users/somebody/Library/Logs/Unreal Engine/LocalBuildLogs/UBA-UnrealDemo-IOS-Shipping_2.txt)
AutomationException: UnrealBuildTool failed. See log for more details. (/Users/somebody/Library/Logs/Unreal Engine/LocalBuildLogs/UBA-UnrealDemo-IOS-Shipping_2.txt)at AutomationTool.CommandUtils.RunUBT(CommandEnvironment Env, FileReference UnrealBuildToolDll, String CommandLine) in /Users/build/Build/++UE5/Sync/Engine/Saved/CsTools/Engine/Source/Programs/AutomationTool/AutomationUtils/UBTUtils.cs:line 59at AutomationTool.UnrealBuild.BuildWithUBT(List`1 Targets, Dictionary`2 TargetToManifest, Boolean DisableXGE, Boolean AllCores, Boolean SkipBuild) in /Users/build/Build/++UE5/Sync/Engine/Saved/CsTools/Engine/Source/Programs/AutomationTool/AutomationUtils/UnrealBuild.cs:line 190at AutomationTool.UnrealBuild.Build(BuildAgenda InAgenda, Nullable`1 InDeleteBuildProducts, Boolean InUpdateVersionFiles, Boolean InForceNoXGE, Boolean InAllCores, Nullable`1 InChangelistNumberOverride, Dictionary`2 InTargetToManifest, Boolean InSkipBuild) in /Users/build/Build/++UE5/Sync/Engine/Saved/CsTools/Engine/Source/Programs/AutomationTool/AutomationUtils/UnrealBuild.cs:line 600at AutomationScripts.Project.Build(BuildCommand Command, ProjectParams Params, Int32 WorkingCL, ProjectBuildTargets TargetMask) in /Users/build/Build/++UE5/Sync/Engine/Saved/CsTools/Engine/Source/Programs/AutomationTool/Scripts/BuildProjectCommand.Automation.cs:line 232at BuildCookRun.DoBuildCookRun(ProjectParams Params) in /Users/build/Build/++UE5/Sync/Engine/Saved/CsTools/Engine/Source/Programs/AutomationTool/Scripts/BuildCookRun.Automation.cs:line 252at BuildCookRun.ExecuteBuild() in /Users/build/Build/++UE5/Sync/Engine/Saved/CsTools/Engine/Source/Programs/AutomationTool/Scripts/BuildCookRun.Automation.cs:line 43at AutomationTool.BuildCommand.Execute() in /Users/build/Build/++UE5/Sync/Engine/Saved/CsTools/Engine/Source/Programs/AutomationTool/AutomationUtils/BuildCommand.cs:line 372at AutomationTool.BuildCommand.ExecuteAsync() in /Users/build/Build/++UE5/Sync/Engine/Saved/CsTools/Engine/Source/Programs/AutomationTool/AutomationUtils/BuildCommand.cs:line 381at AutomationTool.Automation.ExecuteAsync(List`1 CommandsToExecute, Dictionary`2 Commands) in /Users/build/Build/++UE5/Sync/Engine/Saved/CsTools/Engine/Source/Programs/AutomationTool/AutomationUtils/Automation.cs:line 284at AutomationTool.Automation.ExecuteAsync(List`1 CommandsToExecute, Dictionary`2 Commands) in /Users/build/Build/++UE5/Sync/Engine/Saved/CsTools/Engine/Source/Programs/AutomationTool/AutomationUtils/Automation.cs:line 308at AutomationTool.Automation.ProcessAsync(ParsedCommandLine AutomationToolCommandLine, StartupTraceListener StartupListener, HashSet`1 ScriptModuleAssemblies) in /Users/build/Build/++UE5/Sync/Engine/Saved/CsTools/Engine/Source/Programs/AutomationTool/AutomationUtils/Automation.cs:line 168
AutomationTool executed for 0h 3m 34s
AutomationTool exiting with ExitCode=139 (139)

去查看 UBA-UnrealDemo-IOS-Shipping_2.txt 这个文件呢,则没有发现有效的报错信息。
可以看到在编译途中就终止了,“戛然而止”,表现如下:

[194/204] Compile [arm64] UnrealDemo1.cpp
[195/204] Compile [arm64] UnrealDemo2.cpp
[196/204] Compile [arm64] UnrealDemo3.cpp
[197/204] Compile [arm64] UnrealDemo4.cpp
[198/204] Compile [arm64] UnrealDemo5.cpp
[199/204] Compile [arm64] UnrealDemo6.cpp

排查过程

  1. UBA-UnrealDemo-IOS-Shipping_2.txt 这个文件没有报错信息,不代表就没有问题,反而说明了另外一个问题:编译器没有正确抛异常。
  2. 回到最开始的报错信息,这里有一个错误码是有效的信息:AutomationTool exiting with ExitCode=139 (139)。直接让ai给我们分析一下这个错误码是什么意思。
    AI回复如下
虚幻引擎构建 IPA 时出现 AutomationTool exiting with ExitCode=139 (139) 错误通常表示​​进程因内存访问冲突(段错误)被操作系统强制终止​​。此错误在 macOS/Linux 系统中常见(对应 SIGSEGV 信号),可能由资源不足、文件损坏或环境问题引发。

AI还给出了一些解决方案,比如检查机器内存跟硬盘条件等,这里感觉不太像,因为我的机器配置还行,运行时的状态也还不错。虽然解决方案无用,但是很好的印证了我们上述的猜想:编译器没有正确抛出异常,应该是UBT直接挂掉了,导致编译到一半就停了,产生了这样的现象。
3. 看以往UE版本的构建日志,从UE5.4开始,UBA-UnrealDemo-IOS-Shipping_2.txt 这个文件前缀加上了UBA。这个其实是有点疑问的,但是还没有去理它。
4. 我根据错误码信息来搜,已经快速得到了一个直接有用的经验:https://community.cesium.com/t/issue-problems-with-cesium-and-ue-5-5-3-on-macos-ios/38984/2
5. 再来查下UBA的相关信息,一下子就有了很多内容了。虚幻论坛很多都有反馈UBA导致的编译报错或崩溃问题。虚幻文档自己也写着,UBA only supports Windows in Unreal Engine 5.5. Support for Mac and Linux are planned for a future release.:https://dev.epicgames.com/documentation/en-us/unreal-engine/horde-unreal-build-accelerator-and-remote-compilation-tutorial-for-unreal-engine

结合上述的信息,关闭UBA应该是有效的,至少关闭UBA不至于引入什么额外的坏影响。那就大胆尝试,验证关闭UBA后可以正常构建iOS了。

解决方案

关闭UBA,以下两选一都可以。

  1. 根据虚幻官方的文档,通过配置文件来实现: https://dev.epicgames.com/documentation/zh-cn/unreal-engine/build-configuration-for-unreal-engine
  2. 自己改虚幻引擎中UBA的默认配置,重编UBT即可,文件为: Engine/Source/Programs/UnrealBuildTool/Configuration/BuildConfiguration.cs

真正的原因

我还真不知道…留个坑,要是以后知道了就回来写。

个人猜测耗时开启UBA分布式编译之后,UBA与Xcode之间的兼容性冲突是高度可能的原因。

  1. UBA在UE5.5中仍属于​​Beta功能​​,且官方文档明确其​​对macOS/Linux的支持尚未完善
  2. UE5.5官方release notes写的是推荐用Xcode 15.4+​​,我们的机器上用的16.2,可能UBA不兼容,导致UBT崩溃。因为这个情况在多台电脑上都遇到,所以不是偶然的问题。

其他参考资料

https://forums.unrealengine.com/t/compiler-crashes-while-compiling-engine/2546500/4
https://forums.unrealengine.com/t/solution-for-ue-5-5-1-new-c-project-compilation-issues-attempted-to-read-or-write-protected-memory/2298265

http://www.xdnf.cn/news/14044.html

相关文章:

  • sharepoint 共享excel,如何实现某个 sheet 别人只读,但是另一个 sheet 可以编辑
  • 临时文件夹大量0字节xml问题排查
  • 在pyCharm中创建新的conda环境
  • 北斗导航 | 基于MATLAB的卫星导航单点定位算法(卡尔曼滤波增强)
  • 人工智能时代汽车营销如何创新突破?云徙科技汽车营销智能体助力车企立足数智化转型
  • Day53 Python打卡训练营
  • Github指南-Add .gitignore和Choose a license
  • 【C#】针对System.Drawing.Bitmap的压缩
  • python从环境变量和配置文件中获取配置参数
  • C#连接SQLServer数据库异常分析处理
  • 磁盘配额管理
  • django restframework 在serializer里 通过context设置session
  • HashMap vs LinkedHashMap
  • SpringMVC 常用注解及页面跳转方式(面试)
  • vue前端项目打包和部署
  • Vue3 + TypeScript 操作第三方库(Element Plus 的 ElTable)的内部属性
  • SQL Server 修改数据库名及物理数据文件名
  • 性能测试——搭建Prometheus+Grafana平台
  • linux学习慕课版 第一章 Linux 文件与目录学习笔记
  • Nginx 配置 HTTPS 与证书格式全解析:支持后端代理验证
  • 基于云计算的振动弦分析:谐波可视化与波动方程参数理解-AI云计算数值分析和代码验证
  • 计算机视觉之三维重建(深入浅出SfM与SLAM核心算法)—— 3. 单视几何
  • 从入门到精通:C# 中 AutoMapper 的深度解析与实战应用
  • 嵌入式PADS中元件封装绘制与实现
  • MySQL 8.0 OCP 英文题库解析(十八)
  • 使用 C/C++ 和 OpenCV DNN 进行人体姿态估计
  • 洛谷 蜜蜂路线 高精度
  • 图片去水印,图片变清晰,完成免费
  • Webpack:现代前端构建工具的核心解析
  • npm安装electron报错权限不足