[UE5]WindowsでPlatformsにiOSを出現させる方法
こんな状態です
近々AndroidとiPhone向けにアプリをリリースしようと思っているのですが、そもそもMacの操作に慣れていないので、iOS版はWindowsからリモートビルドすることにしました。
公式ページを見て、iTunesをインストールしたり、SSH Keyでゴニョゴニョしないといけないんだなぁ・・・とブツブツ言いながらProject SettingsのPlatformsを見ると、
ない・・・だと・・・?
なるほど、確かにLauncher版であればインストールオプションからiOSを選択すれば良かったのに対し、ソースコードビルドはまた違いますよねそりゃ。
というわけで、WindowsでのソースコードビルドUEにiOSを出現させる方法を書きます。
完成すると以下のようになります。
開発環境
- Windows11
- UE5.1.0(ソースコードビルド)
- VisualStudio2022
- iTunes(version:12.12.10.1)
作業開始
iTunesをインストールします。下記サイトにアクセスし、赤枠の箇所をクリックしてダウンロードしてください。公式によるとMicrosoftStore版はリモートビルドに邪魔なものが入ってるから論外だそうです。
設定はそのままでインストールします。
インストール先はC:\Program Files\iTunes\
です。
次に、エンジンフォルダの、\Engine\Source\Programs\UnrealBuildTool\Platform\Mac\ApplePlatformSDK.Versions.cs
を開きます。
下記画像の赤枠で囲ったMaxVersionの値を1499.0
から8999.0
に変更します。
なんで8999.0なの?
GetValidVersionRange関数内のif文でMacなのかWindowsなのかを判断し、それに対応するAppleSDKのバージョン範囲を設定しています。
ですが、こちらの記事でスタッフのAdam Kingさんが仰っている通り、Windowsでは実際はAppleSDKのバージョンではなく、iTunesのバージョンをチェックしているそうです。
なので、iTunesのバージョンに対応できるようにMaxVersionの値を大きくしている訳です。
ではなぜiTunesのバージョン12.12.10.1ではなく8999.0なのか?ですが、調べているとどうもiTunesのバージョンではなく、MobileDevice.dll
のファイルバージョンを参照しているぽいです。
\Engine\Source\Programs\IOS\MobileDeviceInterface\MobileDevice.cs
ファイルにてバージョンのチェックを行っているのですが、コードにはiTunesではなくMobileDevice.dll
を探している記述があります。
下記画像のレジストリデータ値の名前からMobileDevice.dll
のパスを取得しているみたいですね。
このMobileDevice.dll
が何をするファイルなのかはわかりませんが、
つまり、MobileDevice.dll
のファイルバージョンより上の値を設定すればいいだけなので、今回は1643.2.4.1より上の値であればOKです。
変更したら、リモートビルドしたいプロジェクトのuprojectで右クリックし、Generate Visual Studio project files
を実行します。
その後、更新されたVisual Studioのslnファイルを開きます。
ConfigurationをDevelopment Editor
に、PlatformはWin64
でビルドします。
ビルドが終わったらプロジェクトを開きましょう。
ProjectSettingsのPlatformsを見るとiOSが追加されているはずです。
まとめ
こうやって記事にまとめるとたったこれだけか(´・ω・`)と思いながら、実際手探りでやっていたので、結構時間かかりました。ネットで検索したら数件同じ内容で困っている人もいたので、この記事で自分と同じように悩む人が減ったらいいなと思います。
参考文献
Discussion