iOS 用に署名つきビルドを作成するには Mac と Apple Developer アカウントが必要です。ただし、Windows マシンを主に使用するチームの場合、Unreal Engine 4 (UE4) は Windows PC と Mac PC の間に SSH 接続 を確立して iOS ビルドをリモートで行うことが可能です。そのためには、SSH 接続を Mac 上で受信可能にし、SSH キーと資格情報を Windows 端末で設定する必要があります。この操作ガイドでこのプロセスを説明します。
Windows でブループリントだけの iOS プロジェクトを作成する
ブループリントだけ の iOS プロジェクトを作成する場合、以下のセクションで説明するリモート ビルド プロセスを完全に使用する必要はありません。その代わり、エディタに iOS デベロッパー証明書 と プロビジョニング プロファイル を設定しているのであれば、Windows マシンを使って直接 iOS ビルドを作成することができます。ただし、今後プロジェクトに C++ コードを追加する場合は、このページで説明する手順に従ってください。
ビルドに署名を付ける方法については、「iOS プロビジョニング」を参照してください。
1. 必要なセットアップ
IOS リモート ビルドを使用するには、iOS プロジェクトをビルドできる Mac と Windows PC がそれぞれ最低 1 台ずつ必要です。両方のマシンでインターネット接続ができ、かつ両方に同じ UE4 プロジェクトがなければなりません。
iOS プロジェクトに必要なバイナリがあることを確認するために Windows マシンに iTunes をインストールする必要があります。iTune のダウンロードおよびインストールは Windows Store からではなく Apple のウェブサイト から行うことを推奨します。Windows 版にはリモート ビルド プロセスの障害となることがある余計なバイナリが含まれているためです。iTune を Apple から直接取得するには、下にスクロールして「Looking for other versions? (他のバージョンをお探しですか?)」というセクションで Windows をクリックします。
Mac の システム キーチェーン に iOS デベロッパー証明書をインストールし、iOS プロビジョニング に従ってプロジェクト用にプロビジョニング プロファイルを設定しなければなりません。
Mac にプロジェクトにビルドを作成するための設定を行ったら、次のセクションへ進む前に動作の確認のため、最低 1 回はそのマシンで直接ビルドを実行してください。
Mac でバッシュをデフォルトのシェル スクリプト処理言語として設定する (4.26 以前のバージョン)
2021 年 1 月現在、Apple はデフォルトのシェル スクリプト処理言語を zsh に変更しました。これにより iOS で Unreal Engine ビルドを起動するとエラーが発生することがあります。エラーが発生した場合は、出力ログに以下のような 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:Launch failed!Unknown Error
この問題が発生した場合は、以下の手順に従ってバッシュをデフォルトのスクリプト処理言語に設定してください。
-
[Apple Menu] を開き、[System Preferences (システム環境設定)] をクリックします。
-
[Users & Groups] を開きます。
-
[鍵] アイコンをクリックし、アカウント名とパスワードを入力します。
-
ユーザーのリストのユーザー名を Ctrl を押しながらクリックし、[Advanced Options (詳細オプション)] を選択します。
- Login shell ドロップダウン メニューをクリックし、シェルを
bin/zsh
ではなくbin/bash
に設定します。
これらの設定でアプリケーションを再度パッケージ化して起動すると、正常に起動します。
以上の手順は Unreal Engine 4.26 以前のバージョンに適用されます。これより後のリリースでは zsh がサポートされます。
2. Mac へのリモート ログインを有効にする
プロジェクトの設定が完了したら、SSH 接続ができるように Mac を設定する必要があります。
- Mac の [System Preferences (システム環境設定)] を開いて [Sharing (共有)] をクリックします。
- [Remote Login (リモートログイン)] のボックスにチェックを入れます。
-
[System Preferences (システム環境設定)] を開いて > [Network (ネットワーク)] をクリックします。
-
コンピュータの [IP Address] に注目してください。Windows PC 上でリモート接続を設定するためにこれが必要となります。
これらの手順を完了すると、Mac はご使用の PC から送信される SSH 接続を受信できるようになります。
3. Windows の設定と SSH キーの生成
Windows マシンで以下の手順を行ってリモート iOS ビルドの設定をします。
-
Unreal Editor でプロジェクトを開いて [Project Settings (プロジェクト設定)] を開きます。
-
[Platforms (プラットフォーム)] > [iOS] > [Build] の順に選択します。
-
[Remote Server Name (リモートサーバー名)] 入力フィールドに、プロジェクトのビルドに使う Mac 名または IP アドレスを入力します。
-
[Remote Server Name] 入力フィールドに、リモートの Mac へのログインに通常使用するユーザー名を入力します。
-
[Generate SSH Key (SSH Key を生成)] をクリックします。SSH キーを生成する一連のプロンプトの付いたコマンド プロンプト ウインドウが開きます。
-
ホストの認証ができないというメッセージを受信した場合は、プロンプトに「yes」と入力して続けます。
-
前の手順で [Remote User Name (リモート ユーザー名)] 入力フィールドに指定したユーザーに属する パスワード を入力します。
-
プロンプトが パスフレーズ の入力を要求します。パスフレーズを入力しない場合は、ユーザー インタラクションを要求なしにリモート接続を使用することができます。
-
プロンプトが表示されたら、Mac の パスワード と ユーザー名 を再度入力してプロセスを完了します。
SSH キーを生成すると、Windows マシンで Mac へのリモート接続を開始して iOS ビルドを作成することができるようになります。
Unprotected Private Key エラーの対応方法
以下のようなエラーが出る場合があります。
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] をクリックします。
-
テキストボックスに ユーザー を入力して [Enter] を押します。
-
ユーザー権限が [Read] と [Read & Execute] に設定されていることを確認してください。 こうすることで、グループ権限の確認時に SSH が問題としていた、ファイルのプライマリ グループが自分のユーザー名とは異なるものに変更されます。この後プロセスは正常になります。
これまでは SubInACL をこの目的に使用することができましたが、Microsoft から使用できなくなりました。
4. オプションのチーム設定
今後他のプロジェクトにこのデータを共有するには、コンピュータの「*Engine.ini
」ファイルの 1 つに [Remote Server Name (リモート サーバー名)] と [Remote User Name (リモート ユーザー名)] を指定します。
-
Remote Server Name プロパティの横にあるボタンを選択して コンフィギュレーション エディタ を開きます。
-
SSH データを共有するそれぞれの
.ini
ファイルにプロパティを設定します。 -
これらの手順を Remote User Name に対しても行います。
これらの .ini ファイルを共有することにより、複数のプロジェクトまたはユーザーが SSH 情報を利用できるようになります。SSH キーは「Engine/Build/SSHKeys
」フォルダに格納されます。このディレクトリをソース コントロール システムにチェックインすれば、自分のチームと共有することができます。
5. 最終結果
上記の手順を完了すると、使用している Windows マシンの Unreal Editor で [File] > [Package Project] > [iOS] をクリックすることでリモート ビルドを開始することができます。SSH 接続を行い、Mac にコマンドを送信してビルドの作成を開始します。