手把手帮你解决升级Xcode后UE5(UE4)编译、打包失败的问题(Mac、Windows均有对应方案)

手把手帮你解决升级Xcode后UE5(UE4)编译、打包失败的问题(Mac、Windows均有对应方案)

出去玩了好几个月,回来更新一个老的IOS项目,发现使用Transporter上传ipa文件时,AppStore已经不再支持IOS 15 SDK之前版本打包的应用了。


为了能更新到IOS 15 SDK,我们必须将Xcode也升级到13版本之后。连带着的,我的Mac系统也得升级到最新版才能支持Xcode13。(苹果这一套更新流程真的是痛苦)

一切系统、软件都已经升级完毕。我们满心欢喜地通过windows进行远程打包,发现报了一堆variable “***” set but not used 的错误。

而直接在Mac上通过Xcode编译空项目时,竟然也报这个错误。那基本可以断定,最新版的xcode编译条件更加严格,“set but not used”这种不算错误的错误,也被拎出来鞭尸了。

当然,我们可以把没有使用的变量都注释掉以规避掉这个问题,但是在开发测试阶段,变量又很多的情况下这样做非常耗时,更不要说有些未使用变量是部分引擎模块本身就存在的,所以我们还是要解决这个编译设置的问题。


解决方法有很多,大家择一而用就好。(推荐方法二、三)

一、使用较低版本的Xcode(适合纯小白)--亲测可用

Xcode13也是有很多小版本的,经过国内外各位开发者的测试,使用Xcode13.2.1版本你既可以享受最新版本的IOS SDK,你也可以不去管编译设置导致的错误。需要的用户可以直接使用以下链接下载使用。

download.developer.apple.com

此方式不需要改代码,适合小白用户。但也仅适合小白用户。因为IOS SDK版本不断升级,以后我们必然还要使用更新的Xcode14、Xcode15 。。。 使用低版本Xcode只能解决眼下问题。


二、更改Unreal项目设置(适合使用mac编译的人)--亲测可用

用xcode打开项目,我们找到项目中的 .target.cs 和 Editor.target.cs,在其中加入以下两行

bOverrideBuildEnvironment = true;
AdditionalCompilerArguments = "-Wno-unused-but-set-variable";

记得两个文件都要改,不要忘记Editor.target.cs。

之后我们重新使用Xcode编译,便可畅通无阻了。

当然,缺点是如果在windows下添加这两行进行远程编译,这是不起作用的,甚至Visual Studio会报Wno-unused-but-set-variable指令无效阻止你重新编译项目。


三、修改Unreal引擎文件(适合用windows进行远程编译的人) --亲测可用

找到Engine/Source/Programs/UnrealBuildTool 目录,双击 UnrealBuildTool.csproj 打开工程(不要求源码版,Launcer版本也可)

定位到工程的Platform/IOS/IOSToolChain.cs文件

在文档中搜索关键词 -Wall

我们删掉-Wall

rebuild一下UnrealBuildTool

关掉UBT工程,重新打开原本的项目,编译、打包一条龙毫无障碍~


在外面玩了好几个月,我终于要回到开发生活当中了。

大家关于游戏开发有想看、想学、想解决,又或者网上找不到资料、解决方案的,不管是美术方面还是程序方面,亦或者是webgl这种偏门应用领域,都可以在下面留言,如果有时间的话我会在旅行空余时间挑一些实用内容写写文章、做做视频。

编辑于 2022-07-06 15:09

文章被以下专栏收录