Choose your operating system:
Windows
macOS
Linux
在创建iOS签名项目时,需要使用Mac和Apple开发人员账户。然而,对于主要使用Windows系统的团队来说,它他们可以使用 虚幻引擎4(UE4) 在Windows PC和Mac之间建立 SSH连接 ,从而远程创建iOS项目。这要求你在Mac上允许SSH连接,然后还需要设置SSH密钥和凭证,以便在Windows系统上访问Mac。本指南将带领你实现这一操作。
在Windows上创建"仅蓝图"iOS项目
如果你要创建 仅蓝图 类型的iOS项目,则不必参照下文中的完整远程创建步骤。相反,你可以使用Windows计算机直接创建iOS项目,前提是你已在编辑器中设置 iOS开发人员证书 和 授权配置文件 。但是,如果你之后打算在项目中添加C++代码,则还需要遵循此页面上的步骤。
有关如何为构建版本签名的信息,请参阅关于 iOS授权 的指南。
1.必要设置
要使用iOS远程构建功能,你至少需要一台能够构建iOS项目的Mac,以及一台Windows PC。两台计算机都必须接入互联网或局域网,并且必须安装同一个UE4项目。
你的Windows电脑必须安装 iTunes ,以便确保你拥有iOS项目所需的二进制文件。我们建议你从 Apple官网 而不是Windows Store下载和安装iTunes,因为Windows版本包括额外的二进制文件,可能会对远程构建产生干扰。如需从Apple直接获取iTunes,请向下滚动并找到"寻找其他版本?"这一段,然后点击 Windows 。
你的Mac必须已经将你的iOS开发人员证书加载进 系统钥匙串(System Keychain) ,并且你必须按照 iOS授权 设置项目的授权配置文件。
在你设置完Mac并为项目构建做好准备后,你应至少在该电脑上直接运行一次构建版本,确保它可以正常运行,然后再继续下一部分。
将Bash设置成Mac默认的Shell脚本语言(4.26及更早版本)
从2021年1月起,苹果将默认的shell脚本语言改为 zsh ,这有时会导致在iOS上启动虚幻引擎版本时产生错误。如果发生这种情况,输出日志将包含类似以下内容的zsh和 rsync 错误:
LogPlayLevel: zsh:1: no matches found: /Users/[UserName]/UE4/Builds/[DesktopName]/C/Program_Files/Epic_Games/UE_4.26/Engine/Intermediate/IOS/*.plist
LogPlayLevel: zsh:1: no matches found: /Users/[UserName]/UE4/Builds/[DesktopName]/C/Program_Files/Epic_Games/UE_4.26/Engine/Intermediate/TVOS/*.plist
LogPlayLevel: zsh:1: no matches found: /Users/[UserName]/UE4/Builds/[DesktopName]/C/Users/[UserName]/Documents/Unreal_Projects/[ProjectName]/Intermediate/IOS/*.plist
LogPlayLevel: zsh:1: no matches found: /Users/[UserName]/UE4/Builds/[DesktopName]/C/Users/[UserName]/Documents/Unreal_Projects/[ProjectName]/Intermediate/TVOS/*.plist
LogPlayLevel: [Remote] Executing build
LogPlayLevel: zsh:1: no matches found: -ini:Game:[/Script/UnrealEd.ProjectPackagingSettings]:BlueprintNativizationMethod=Disabled
LogPlayLevel: [Remote] Downloading C:\Users[UserName]\AppData\Roaming\Unreal Engine\AutomationTool\Logs\C+Program+Files+Epic+Games+UE_4.26[ProjectName]-IOS-Development_Remote.txt
LogPlayLevel: rsync: link_stat "/Users/[UserName]/UE4/Builds/[DesktopName]/C/Users/[UserName]/AppData/Roaming/Unreal_Engine/AutomationTool/Logs/C+Program+Files+Epic+Games+UE_4.26/[ProjectName]-IOS-Development_Remote.txt" failed: No such file or directory (2)
LogPlayLevel: Error: rsync error: some files/attrs were not transferred (see previous errors) (code 23) at /home/lapo/packaging/rsync-3.0.4-1/src/rsync-3.0.4/main.c(1506) [receiver=3.0.4]
LogPlayLevel: Error: ERROR: Unable to download 'C:\Users[UserName]\AppData\Roaming\Unreal Engine\AutomationTool\Logs\C+Program+Files+Epic+Games+UE_4.26[ProjectName]-IOS-Development_Remote.txt' from the remote Mac (exit code 23).
LogPlayLevel: Took 21.2652808s to run UnrealBuildTool.exe, ExitCode=5
LogPlayLevel: UnrealBuildTool failed. See log for more details. (C:\Users[UserName]\AppData\Roaming\Unreal Engine\AutomationTool\Logs\C+Program+Files+Epic+Games+UE_4.26[ProjectName]-IOS-Development.txt)
LogPlayLevel: AutomationTool exiting with ExitCode=5 (5)
LogPlayLevel: Completed Launch On Stage: Build Task, Time: 20.779392
LogPlayLevel: BUILD FAILED
PackagingResults: Error: Launch failed! Unknown Error
如果你遇到这个问题,请按照以下步骤将bash设置为你的默认脚本语言:
-
打开 Apple菜单 ,然后单击 系统偏好设置 。
-
打开 用户和组 。
-
点击 锁 图标,然后输入账户名和密码。
-
按住Control并点击用户列表中的用户名,然后选择 高级选项 。
-
点击 登录shell 下拉菜单,然后将shell设置为`bin/bash`而不是`bin/zsh`。
如果你用这些设置打包并再次启动应用程序,应该会成功启动。
这些步骤适用于虚幻引擎4.26.0及以前的版本。未来的版本将支持zsh。
2.在Mac上启用远程登录
设置好项目后,你需要配置Mac以便支持SSH连接。
-
打开Mac的 系统偏好设置(System Preferences) ,然后导航至 共享(Sharing) 。
-
选中 远程登录(Remote Login) 复选框。
-
打开系统 偏好设置(Preferences) > 网络(Network) 。
-
注意计算机的 IP地址 。在Windows PC上设置远程连接时将需要此IP地址。
完成这些步骤后,Mac将能够从你的PC接受传入的SSH连接。
3.Windows配置和生成SSH密钥
在Windows计算机上完成以下步骤,以便对其进行远程iOS构建配置。
-
在 虚幻编辑器 中打开项目,然后打开 项目设置(Project Settings)
-
导航至 平台(Platforms) > iOS > 构建(Build) 。
-
在 远程服务器名称(Remote Server Name) 字段中,输入用于构建项目的Mac名称或其IP地址。
-
在 远程用户名(Remote User Name) 字段中,输入你通常用于登录Mac的用户名。
-
点击 生成SSH密钥(Generate SSH Key) 。这将打开命令提示窗口,其中包含一系列将生成SSH密钥的提示。
-
如果你收到消息提示主机无法通过身份验证,请在提示中输入" 是 "继续。
-
输入属于你在上一分段 远程用户名(Remote User Name) 中指定的用户 密码 。
-
提示将要求你输入 口令(passphrase) 。如果你选择不输入口令,则可以使用远程连接而无需任何用户交互。
-
出现提示时,再次输入Mac的 密码 和 用户名 完成此过程。
现在,你已经生成SSH密钥,你将能够在Windows计算机上启动与Mac的远程连接,以便创建iOS构建版本。
Workaround For Unprotected Private Key
你可能会看到类似下文的错误消息:
错误:无法为远程用户确定主目录。SSH 输出:...警告: 未保护的私钥文件!...0660 (ERROR: Unable to determine home directory for remote user. SSH output:...WARNING: UNPROTECTED PRIVATE KEY FILE!...0660)
如果你没有看到这条错误消息,你可以继续下一步。如果你看到了,请使用以下解决方法:
-
找到你的
RemoteToolChainPrivate.key
。 -
右键点击文件并选择 属性(Properties) 。
-
点击 安全(Security) 选项卡。
-
点击 编辑(Edit) 。
-
移除所有组或用户名。
-
点击 添加(Add) 。
-
点击 对象类型(Object Types) 。确保勾选所有复选框,然后点击 OK 。
-
在文本框中,输入 Users ,然后按下回车。
-
确保用户权限设置为 可读(Read) 和 可读&执行(Read & Execute) 。
这会更改文件的主组(primary group),以避免其与你的用户名同名——SSH在检查组权限时会因为同名发生混淆。现在操作应该能正常执行了。
SubInACL此前可以用于此用途,并目前微软已经不再提供。
4.可选团队设置
要在将来对其他项目共享此数据,请在计算机上的
*Engine.ini
文件之一中指定远程服务器名称和远程用户名称。
-
选择 远程服务器名称(Remote Server Name) 属性旁边的按钮,打开 配置编辑器(Configuration Editor) 。
-
为每个你要共享SSH数据的.ini文件设置属性。
-
针对 远程用户名(Remote User Name) 重复这些步骤。
通过共享这些.ini文件,你可以向多个项目或用户提供SSH信息。SSH密钥本身存储在
Engine/Build/SSHKeys
文件夹中。你可以将此目录签入源代码控制系统中,以便与团队共享。
5.最终效果
完成上述步骤后,在Windows计算机上的虚幻编辑器中点击 文件(File) > 打包项目(Package Project) > iOS ,启动远程构建。建立SSH连接,然后将命令发送到Mac,开始构建。