.ipa file not generated in 5.3.2 with same build command from 4.27

Hi there,

I understand that 5.3.2 is not officially supported for changes or fixes anymore, however I was wondering if I could get advice on whatever I may be doing wrong here (maybe I’m missing a build flag and it’s that simple of a fix).

We released an iOS app built on 4.27 a while back. We are now attempting to push an update for it in 5.3.2. We are using basically the exact same build command when making the IOS builds between those two versions, however it seems that the build command now wants to generate an .app file in the archive directory instead of a .ipa file. This is our build command running on a Mac with the latest MacOS + Xcode:

./RunUAT.sh BuildCookRun -project=Test.uproject -noP4 -clientconfig=Shipping -serverconfig=Shipping -utf8output -platform=IOS -targetplatform=IOS -build -cook -compressed -map=TestMap -stage -package -pak -manifests '-cmdline=TestMap -Messaging' -archive -archivedirectory=MyNewGameFolder -compile -distribution

Seeing posts like [Content removed] on EPS/UDN gives me the impression that this (lack of ipa file in archive directory) is something that has impacted other teams too. It appears that the builds generate a .app and a .xcarchive file only now in the archive folder (no ipa file), upon which for some reason the user may be expected to manually export an .ipa from the xcarchive file AFTER anything Unreal does is complete. Surely that isn’t the actual solution? And users on EPS/UDN report that although an .ipa generated that manual way may install correctly, it will not launch.

Other sources for how there seem to be extra steps required to make an .ipa file in 5.3, even after Unreal’s process is complete:

The 5.3.2 documentation for making an IOS build only ever mentions using the editor GUI to make an IOS build, which is not an option for us in this case (we use build servers that automate our builds, so everything needs to be through the command-line).

One thing we have already tried was setting bUseModernXcode in our Target settings to false (as it is true now by default in UE5), but that created different problems.

Does anyone know what our command line build tool is missing that somehow the editor GUI in that documentation page is not, just to create an IPA file with the UE process? I can only assume they have bUseModernXcode enabled, as that is defaulted to true in UE5, as mentioned above - and the documentation does not mention disabling this flag to properly make an IPA from the editor GUI.

Thank you,

Hannah

[Attachment Removed]

Hi Hannah,

UE 5.3 turned on the Modern Xcode workflow by default. Under that workflow, a distribution package (-distribution) runs Xcode’s archive action rather than the old build-and-sign path, so the expected output is a ProjectName.xcarchive, not an .ipa.

Epic considers this the intended behavior on macOS — the .ipa is only really needed on Windows-driven builds. So on 5.3.2 you’ll find a .app/.xcarchive where older engines left an .ipa.

How to get an IPA anyway

Option 1 — Export from the archive (recommended, works with Modern Xcode)

1. Build the archive: RunUAT.command BuildCookRun -project=… -platform=IOS -clientconfig=Shipping -build -cook -stage -pak -package -distribution -archive → produces ProjectName.xcarchive.

2. Export to IPA with an ExportOptions.plist:

xcodebuild -exportArchive -archivePath ProjectName.xcarchive \

-exportOptionsPlist ExportOptions.plist -exportPath .

2. (Easiest way to get a valid ExportOptions.plist is to do one manual ad-hoc export in Xcode’s Organizer → Distribute App and reuse the plist it emits.) The GUI Organizer route also works if you don’t need it scripted.

Option 2 — Revert to the legacy workflow (forces the old .ipa output)

Disable Modern Xcode via the target settings — bUseModernXcode=false (Project Settings, or the [/Script/MacTargetPlatform.XcodeProjectSettings] section in DefaultEngine.ini).

Best regards.

[Attachment Removed]