📱

[UE5]WindowsでPlatformsにiOSを出現させる方法

2023/09/29に公開

こんな状態です

近々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版はリモートビルドに邪魔なものが入ってるから論外だそうです。
https://www.apple.com/itunes/

設定はそのままでインストールします。
インストール先は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が追加されているはずです。

まとめ

こうやって記事にまとめるとたったこれだけか(´・ω・`)と思いながら、実際手探りでやっていたので、結構時間かかりました。ネットで検索したら数件同じ内容で困っている人もいたので、この記事で自分と同じように悩む人が減ったらいいなと思います。

参考文献

https://docs.unrealengine.com/5.1/ja/building-ios-projects-on-windows-in-unreal-engine/
https://forums.unrealengine.com/t/the-ios-platform-does-not-exist-in-the-project-settings/792239/2
https://github.com/EpicGames/UnrealEngine/commit/0abede3e1c1257bb90b375d9e0f1b055b9d46f6c

Discussion