서명된 iOS용 빌드를 생성하려면 Mac과 Apple Developer 계정이 필요합니다. 하지만 주로 Windows 머신을 사용하는 팀의 경우 언리얼 엔진 4(UE4) 에서 Windows PC와 Mac 사이에 SSH 연결 을 설정하여 원격으로 iOS 빌드를 생성할 수 있습니다. 이를 위해서는 들어오는 SSH 연결을 Mac에서 허용해야 하며, Windows 머신에서 Mac에 액세스하기 위한 SSH 키와 크리덴셜을 설정해야 합니다. 이 가이드에서는 이러한 프로세스를 안내합니다.
Windows의 블루프린트 전용 iOS 프로젝트
블루프린트 전용 iOS 프로젝트를 생성하는 경우 아래 섹션에 나와 있는 전체 원격 빌드 프로세스를 사용하지 않아도 됩니다. 대신 에디터에서 iOS 개발자 인증서(iOS Developer Certificate) 및 프로비저닝 프로파일(Provisioning Profile) 을 구성했다면 Windows 머신을 사용하여 iOS 빌드를 직접 만들 수 있습니다. 하지만 향후 프로젝트에 C++ 코드를 추가하는 경우 이 페이지의 다음 단계를 따라야 합니다.
빌드 서명 방법에 대한 내용은 iOS 프로비저닝 가이드를 참조하세요.
1. 필수 구성
iOS 원격 빌드를 사용하려면 iOS 프로젝트를 빌드할 수 있는 Mac이 하나 이상 필요하며 Windows PC도 하나 이상 필요합니다. 두 머신 모두 인터넷이나 LAN에 연결되어 있어야 하며, 동일한 UE4 프로젝트를 가지고 있어야 합니다.
iOS 프로젝트에 필요한 바이너리를 갖추려면 Windows 컴퓨터에 iTunes 가 설치되어 있어야 합니다. Windows 버전에는 원격 빌드 프로세스를 방해하는 추가 바이너리가 포함되어 있을 수 있으므로 Windows 스토어보다는 Apple 웹사이트에서 iTunes를 다운로드하여 설치하는 것을 권장합니다. Apple에서 iTunes를 직접 받으려면 '다른 버전을 찾고 있다면?(Looking for other versions?)' 섹션까지 스크롤을 내린 다음 Windows 를 클릭하세요.
Mac의 시스템 키체인(System Keychain) 에는 iOS 개발자 인증서(iOS Developer Certificate)가 설치되어 있어야 하며 iOS 프로비저닝 구성에 따라 프로젝트에 대한 프로비저닝 프로필(Provisioning Profile)을 설정해야 합니다.
프로젝트에 대한 빌드를 생성하도록 Mac을 설정한 후에는 다음 섹션으로 진행하기 전에 해당 머신에서 직접 빌드를 한 번 이상 실행하여 제대로 작동하는지 확인해야 합니다.
Mac에서 Bash를 디폴트 셸 스크립팅 언어로 설정하기(4.26 이하)
2021년 1월부로 Apple은 디폴트 셸 스크립팅 언어를 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. 자세한 내용은 로그를 참고하세요. (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: 실행 실패! 알 수 없는 오류
이 문제를 겪었다면 다음 단계를 따라 디폴트 스크립팅 언어를 bash로 설정합니다.
-
Apple 메뉴(Apple Menu) 를 연 다음 시스템 설정(System Preferences) 을 클릭합니다.
-
사용자 및 그룹(Users & Groups) 을 엽니다.
-
자물쇠 아이콘을 클릭한 다음, 계정 이름과 비밀번호를 입력합니다.
-
사용자 목록에서 Ctrl을 누른 채로 사용자 이름을 클릭한 다음 고급 옵션(Advanced Options) 을 선택합니다.
-
로그인 셸(Login shell) 드롭다운 메뉴를 클릭한 다음, 셸을
bin/zsh
가 아닌bin/bash
로 설정합니다.
이 세팅으로 애플리케이션을 패키지로 만들어 다시 실행하면 성공적으로 실행될 것입니다.
이러한 단계는 언리얼 엔진 4.26.0 이하 버전에 적용됩니다. 향후 출시 버전은 zsh를 지원합니다.
2. Mac에서 원격 로그인 활성화하기
프로젝트를 설정한 후에는 SSH 연결을 허용하도록 Mac을 환경설정해야 합니다.
-
Mac의 시스템 환경설정(System Preferences) 을 연 다음 공유(Sharing) 로 이동합니다.
-
원격 로그인(Remote Login) 박스를 체크합니다.
-
시스템 환경설정(System Preferences) > 네트워크(Network) 를 엽니다.
-
컴퓨터의 IP 주소(IP Address) 를 확인합니다. Windows PC에서 원격 연결을 설정하려면 IP 주소가 필요합니다.
이 단계를 완료하고 나면 Mac이 PC에서 들어오는 SSH 연결을 수락할 수 있게 됩니다.
3. Windows 환경설정 및 SSH 키 생성하기
원격 iOS 빌드용으로 환경설정하려면 Windows 머신에서 다음 단계를 완료하세요.
-
언리얼 에디터 에서 프로젝트를 연 다음 프로젝트 세팅 을 엽니다.
-
플랫폼 > iOS > 빌드(Build) 로 이동합니다.
-
원격 서버 이름(Remote Server Name) 필드에 프로젝트를 빌드하는 데 사용하는 Mac의 이름이나 IP 주소를 입력합니다.
-
원격 사용자 이름(Remote User Name) 필드에 평소 Mac에 로그인할 때 사용하는 사용자 이름을 입력합니다.
-
SSH 키 생성(Generate SSH Key) 을 클릭합니다. 그러면 SSH 키를 생성하는 일련의 프롬프트가 포함된 명령 프롬프트 창이 열립니다.
-
호스트를 인증할 수 없다는 메시지가 나타나면 프롬프트에 'yes' 를 입력하고 계속 진행합니다.
-
이전 섹션의 원격 사용자 이름 에서 지정한 사용자의 비밀번호 를 입력합니다.
-
프롬프트에서 패스프레이즈 를 물어볼 것입니다. 패스프레이즈를 입력하지 않기로 선택했다면 사용자 상호작용 없이 원격 연결을 사용할 수 있습니다.
-
메시지가 표시되면 Mac의 비밀번호 와 사용자 이름 을 다시 입력하여 프로세스를 완료합니다.
이제 SSH 키를 생성했으므로 Windows 머신에서 iOS 빌드를 생성하기 위해 Mac에 대한 원격 연결을 시작할 수 있습니다.
보호되지 않은 프라이빗 키에 대한 해결 방법
다음과 같은 오류가 표시될 수 있습니다.
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 를 입력한 다음 Enter를 누릅니다.
-
Users의 사용 권한이 읽기(Read) 및 읽기 및 실행(Read & Execute) 으로 설정되어 있는지 확인합니다.
이렇게 하면 파일의 기본 그룹이 사용자 이름과 동일하지 않도록 변경되어 SSH가 그룹 권한을 확인할 때 혼동하지 않습니다. 이렇게 하면 프로세스가 정상적으로 작동합니다.
이전에는 SubInACL을 이 목적으로 사용할 수 있었지만 Microsoft에서는 더 이상 사용할 수 없습니다.
4. 팀 구성(선택사항)
나중에 다른 프로젝트에 이 데이터를 공유하기 위해 컴퓨터의 *Engine.ini
파일 중 하나에 원격 서버 이름과 원격 사용자 이름을 지정합니다.
-
원격 서버 이름 프로퍼티 옆에 있는 버튼을 선택하여 환경설정 에디터(Configuration Editor) 를 엽니다.
-
SSH 데이터를 공유하려는 각 .ini 파일의 프로퍼티를 설정합니다.
-
원격 사용자 이름 에 같은 단계를 반복합니다.
이 .ini 파일들을 공유하면 여러 프로젝트 또는 사용자가 SSH 정보를 계속 사용할 수 있습니다. SSH 키 자체는 Engine/Build/SSHKeys
폴더에 저장됩니다. 이 디렉터리를 소스 컨트롤 시스템에 체크인하여 팀과 공유할 수 있습니다.
5. 최종 결과
위 단계를 완료한 후 Windows 머신의 언리얼 에디터에서 파일(File) > 프로젝트 패키지(Package Project) > iOS 를 클릭하여 원격 빌드를 시작할 수 있습니다. SSH 연결 후 Mac에 빌드 만들기를 시작하라는 명령이 전송됩니다.