官方文档:虚幻引擎安装式编译
按照官方文档的说明,只需要一行命令就可以完成编译,但是实际编译过程中却遇到了一些报错,需要做一些额外的处理。
步骤 在Engine\Source\Programs\AutomationTool\IOS
目录下新建文件夹Resources
,进入新建的文件夹,再创建两个空的文件,分别命名为:GreenCheck.png
和GreyCheck.png
从这个链接 下载pdbcopy.exe
,把它放到C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\
里,后两层文件夹可能是不存在的,需要手动创建
动手用VS打开一次Engine\Source\Programs\UnrealSwarm
和Engine\Source\Editor\SwarmInterface\DotNET
里面所有的.sln文件,主要是为了打开的时候会提示升级目标运行时并升级到支持的版本
打开Engine\Build\InstalledEngineBuild.xml
,分别注释掉第525行和第537行,因为这两项编译不过
1 2 3 4 5 525: <CsCompile Project ="$(CsToolsDir)/Engine/Source/Programs/IOS/iPhonePackager/iPhonePackager.csproj" Configuration ="Development" Platform ="AnyCPU" Arguments ="/verbosity:minimal /target:Rebuild" Tag ="#Build Tools CS Binaries;#Sign Binaries" TagReferences ="#Build Tools CS Binaries" /> 537: <CsCompile Project ="$(CsToolsDir)/Engine/Source/Programs/IOS/MobileDeviceInterface/MobileDeviceInterface.csproj" Configuration ="Development" Platform ="AnyCPU" Arguments ="/verbosity:minimal /target:Rebuild" Tag ="#Build Tools CS Binaries;#Sign Binaries" TagReferences ="#Build Tools CS Binaries" />
控制台进入引擎根目录,执行命令开始编译
1 "./Engine/Build/BatchFiles/RunUAT.bat" BuildGraph -target="Make Installed Build Win64" -script="./Engine/Build/InstalledEngineBuild.xml" -set :HostPlatformOnly=true -set :HostPlatformEditorOnly=true -set :WithDDC=false -set :GameConfigurations=Shipping
如果是直接源码工程编译,需要修改Setup.bat,在--prompt后面添加参数--threads=20 --exclude=Android --exclude=Linux --exclude=HTML5 --exclude=IOS --exclude=MAC --exclude=TVOS
心路历程 编译报错 报错
1 2 3 4 5 6 7 8 D:\UE-AS-5.0.2\Engine\Binaries\ThirdParty\DotNet\Windows\sdk\3.1.403\Microsoft.Common.CurrentVersion.targets(3036,5): error MSB3554: 无法写入输出文件“D:\UE-AS-5.0.2\Engine\Source\Programs\AutomationTool\IOS\obj\Development\IOS.Automation.Properties.Resources.resources”。Could not find a part of the path 'D:\UE-AS-5.0.2\Engine\Source\Programs\AutomationTool\IOS\Resources\GreenCheck.png'. (D:\UE-AS-5.0.2\Engine\Source\Programs\AutomationTool\IOS\IOS.Automation.csproj) ERROR: Failed to build: D:\UE-AS-5.0.2\Engine\Source\Programs\AutomationTool\IOS\IOS.Automation.csproj ERROR: Failed to build: D:\UE-AS-5.0.2\Engine\Source\Programs\AutomationTool\TVOS\TVOS.Automation.csproj build complete. AutomationTool executed for 0h 0m 6s AutomationTool exiting with ExitCode=1 (Error_Unknown) BUILD FAILED
原来重点就在于后面那句话,就是少了个文件。只要随便新建一个文件取那个名字就好了。之后还会提示另外一个文件也不存在,也是同样新建一个空的就可以了。
编译报错 报错
1 2 3 4 5 6 7 8 Stripping symbols: D:\UE-AS-5.0.2\Engine\Binaries\Win64\Android\UnrealEditor-AndroidDeviceDetection.pdb -> D:\UE-AS-5.0.2\Engine\Saved\Engine\Binaries\Win64\Android\UnrealEditor-AndroidDeviceDetection.pdb ERROR: Unable to find installation of PDBCOPY.EXE, which is required to strip symbols. This tool is included as part of the 'Windows Debugging Tools' component of the Windows 10 SDK (https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk). while executing task <Strip Platform="Win64" BaseDir="D:\UE-AS-5.0.2" Files="#UnrealEditor Win64 Unstripped" OutputDir="D:\UE-AS-5.0.2\Engine\Saved" Tag="#UnrealEditor Win64 Stripped" /> at Engine/Build/InstalledEngineBuild.xml(174) (see D:\UE-AS-5.0.2\Engine\Programs\AutomationTool\Saved\Logs\Log.txt for full exception trace) AutomationTool executed for 1h 16m 0s AutomationTool exiting with ExitCode=1 (Error_Unknown) BUILD FAILED
看提示,但不是很想下载Windows10 SDK,尝试直接从这篇文章 提供的链接下载单个pdbcopy.exe,然后根据这篇帖子 里说的,把它放到C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\
里,后两层文件夹可能是不存在的,需要手动创建
编译报错 报错
1 2 3 4 5 6 D:\Programs\VisualStudio\2022\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(1220,5): error MSB3644: 找不到 .NETFramework,Version=v4.5 的引用程序集。要解决此问题,请为此框架版本安装开发人员工具包(SDK/目标包)或者重新定向应用程序。可在 https://aka.ms/msbuild/developerpacks 处下载 .NET Framework 开发人员工具包 [D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\UnrealSwarm\SwarmCoordinator\SwarmCoordinator.csproj] Took 0.7343335s to run MSBuild.exe, ExitCode=1 Command failed (Result:1): D:\Programs\VisualStudio\2022\MSBuild\Current\Bin\MSBuild.exe D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\UnrealSwarm\SwarmCoordinator\SwarmCoordinator.csproj /property:Platform=AnyCPU /property:Configuration=Development /restore /verbosity:minimal /nologo. See logfile for details: 'MSBuild-2022.12.29-21.07.05.txt' AutomationTool executed for 1h 29m 10s AutomationTool exiting with ExitCode=1 (Error_Unknown) BUILD FAILED
上面链接里对应4.5没有开发工具包,下载4.5.1的工具包之后还是会失败,于是只好把项目重定向。找到源码目录下对应的.sln文件,双击打开VS就会提示更改目标。Engine\Source\Programs\UnrealSwarm
和Engine\Source\Editor\SwarmInterface\DotNET
里面几个sln都要检查一次,不然还会失败。后来居然又失败了,只好把整个Programs里的.sln全都开一遍。
编译报错 报错
1 2 3 4 5 6 D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\Properties\Resources.resx(123,5): error MSB3103: Resx 文件无效。未能找到路径“D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\Resources\GreyCheck.png”的一部分。 第 123 行,位置 5。 [D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\iPhonePackager.csproj] Took 0.42720030000000003s to run MSBuild.exe, ExitCode=1 Command failed (Result:1): D:\Programs\VisualStudio\2022\MSBuild\Current\Bin\MSBuild.exe D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\iPhonePackager.csproj /property:Platform=AnyCPU /property:Configuration=Development /verbosity:minimal /target:Rebuild /restore /verbosity:minimal /nologo. See logfile for details: 'MSBuild-2022.12.30-09.10.34.txt' AutomationTool executed for 0h 15m 52s AutomationTool exiting with ExitCode=1 (Error_Unknown) BUILD FAILED
看起来是是前面遇到过的问题,再添加一下文件吧
编译报错 报错
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\Properties\Resources.resx : error : 在 System.Resources.ResXResourceReader.EnsureResData() [D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\iPhonePackager.csproj] D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\Properties\Resources.resx : error : 在 System.Resources.ResXResourceReader.GetEnumerator() [D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\iPhonePackager.csproj] D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\Properties\Resources.resx : error : 在 Microsoft.Build.Tasks.ProcessResourceFiles.ReadResources(ReaderInfo readerInfo, IResourceReader reader, String fileName) [D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\iPhonePackager.csproj] D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\Properties\Resources.resx : error : 在 Microsoft.Build.Tasks.ProcessResourceFiles.ReadResources(String filename, Boolean shouldUseSourcePath, String outFileOrDir) [D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\iPhonePackager.csproj] D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\Properties\Resources.resx : error : 在 Microsoft.Build.Tasks.ProcessResourceFiles.ProcessFile(String inFile, String outFileOrDir) [D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\iPhonePackager.csproj] D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\Properties\Resources.resx : error : XmlException: 无法加载位于行 123、位置 5 的数据中的类型 ,原因是它在构造时引发下列异常:参数无效。 第 123 行,位置 5。 [D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\iPhonePackager.csproj] D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\Properties\Resources.resx : error : [D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\iPhonePackager.csproj] D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\Properties\Resources.resx : error : ArgumentException: 参数无效。 [D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\iPhonePackager.csproj] D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\Properties\Resources.resx : error : 在 System.Drawing.Bitmap..ctor(Stream stream) [D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\iPhonePackager.csproj] D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\Properties\Resources.resx : error : [D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\iPhonePackager.csproj] Took 0.4406582s to run MSBuild.exe, ExitCode=1 Command failed (Result:1): D:\Programs\VisualStudio\2022\MSBuild\Current\Bin\MSBuild.exe D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\iPhonePackager.csproj /property:Platform=AnyCPU /property:Configuration=Development /verbosity:minimal /target:Rebuild /restore /verbosity:minimal /nologo. See logfile for details: 'MSBuild-2022.12.30-11.13.18.txt' AutomationTool executed for 1h 40m 49s AutomationTool exiting with ExitCode=1 (Error_Unknown) BUILD FAILED
仔细看了下报错,可能是添加的文件真的必须是图片吧,空白文件还不行,试一下确实是这样。而且又缺了另外一个文件YellowCheck.png。
编译报错 报错
1 2 3 4 5 6 CSC : error CS2001: 未能找到源文件“D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\Properties\Resources.Designer.cs”。 [D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\iPhonePackager.csproj] Took 0.47909440000000003s to run MSBuild.exe, ExitCode=1 Command failed (Result:1): D:\Programs\VisualStudio\2022\MSBuild\Current\Bin\MSBuild.exe D:\UE-AS-5.0.2\Engine\Saved\CsTools\Engine\Source\Programs\IOS\iPhonePackager\iPhonePackager.csproj /property:Platform=AnyCPU /property:Configuration=Development /verbosity:minimal /target:Rebuild /restore /verbosity:minimal /nologo. See logfile for details: 'MSBuild-2022.12.30-11.29.41.txt' AutomationTool executed for 0h 1m 58s AutomationTool exiting with ExitCode=1 (Error_Unknown) BUILD FAILED
然后还是报错了,这次是缺少库文件,这下忍不了了,直接把文件夹重命名。之后的报错指出了InstalledEngineBuild.xml中的位置,那就干脆不要编译这个了,反正也用不上,注释525和537行就好。