IOS Build for distribution in 5.3

After I upgraded to 5.3 I can’t make shipping build. New structure of xcodworkspaces and settings always wrong. Even if I disable new XCode project feature. And if I set up every generated file with “Automatic signin” build workd, but then when I try to upload .ipa in Transporter I got a provisioning error. So maybe someone make shipping builds in 5.3 working already? I’m glad for any tips or ideas how to make it.

Oh, and certificates and provis files I used now is the same as I used before with 5.2 and everything work just fine.

4 Likes

I am also running into this issue. Will add a few things:

-5.3 PREVIEW worked fine for creating ipas
-Tried with various XCode versions (something before 14.3, 14.3, and 15.0)
-Tried with development & shipping and the same outcome → no ipa
-Unchecking “For Distribution” in packaging settings creates .app files which isn’t the proper file type
-Tried cleaning and generating xcode files → no ipa still

Unreal docs don’t cover ipa creation in 5.3 and are outdated. The current documentation only handles packaging directing to an iPhone.

Digging into more research. From the section Package and Distribute:

Using Modern Xcode in Unreal Engine 5.3 and newer | Unreal Engine 5.3 Documentation

“UE no longer generates an .ipa file for iOS automatically, as it is not necessary on macOS and only useful on Windows.”

Going to try some things out and hopefully post an answer <3

Just want to reply for visibility - I’m having the same issue. I have no issues building on 5.2.1 and only on 5.3 when I change the icons or splash screen. I’m thinking there’s some kind of default state when you change nothing and when you do, it’s trying to generate a Xcode project and failing in that process. Hoping someone smarter than me can confirm haha

I’m also having issues figuring this out, so here are my findings so far:

By following the modern XCode route when packaging for iOS as a result in the project folder → Intermediate → ProjectFilesIOS → .xcodeproj

Then when I use the “Product → Archive” top menu option, i receive an error:
“ditto: Cannot get the real path for source ‘/Users//Documents/Repositories/<project_name>/Binaries/IOS/<project_name>-IOS-Shipping’” . . . “Command PhaseScriptExecution failed with a nonzero exit code”.

Looks like it has something to do with linking to correct path, but not sure how to fix this and why is it happening in the first place.

Same thing here… just trying to build a scene with a sphere in it to see if I can get it to work.

Do the devs or support ever answer in the forum?

The new structure of Xcode workspaces and settings appears to be causing problems. Even when I disable the new Xcode project feature, I encounter issues. Interestingly, when I set every generated file to “Automatic Sign-In,” the build works, but then I hit a roadblock when trying to upload the .ipa file in Transporter due to a provisioning error. Has anyone successfully resolved shipping build issues in Unreal Engine 5.3? :slightly_smiling_face:

When you say “every generated file” which files are you referring to?

Are you creating a dev build or a deployment/shipping build?

What are your packaging settings in unreal?

Did you change anything else in XCode?

If you got an ipa that’s a huge first step for us. I’m not even getting the ipa, but I’m sure once I do, the provisioning issue will be an easy fix (if I get one at all)

Replying for visibility.

unchecking modernized Xcode:
Making an .ipa file for development works like usual.
Distribution builds fail with the error message, that it has conflicting provisioning settings.
(Project Name) is automatically signed, but the provisioning profile (name) has been manually specified. Set the provisioning profile value to “Automatic” in the build settings editor, or switch to manual signing in the Signing & Capabilities editor.

checking modernized Xcode:
Shipping build succeeds but there is no .ipa file to upload with transporter.

Yeah, had this one too, and I solved distribution build, there is a few steps for it actually:

  1. First of all you need to manually check files in UE_5.3/Engine/Build/BatchFiles/Mac/. In my case there wasn’t fully loaded by Epic Games Launcher, also I got a few changes in some files by me but its not critical.

  2. If there is no one (or few) listed files: xcodeunlock.sh, SyncBuildRunLatest.command, SymbolicateOSXCrashLog.py, CreateDMG.sh, CompileSingleFile.sh, AddEULAToDMG.sh, ThinApp.sh you need to go to github to release branch and download it.

  3. If you download them and put in UE_5.3/Engine/Build/BatchFiles/Mac/ - give access.
    Open terminal and write:

cd “/Users/Shared/Epic Games/UE_5.3”
sudo chown -R “username” Engine
chmod -R u+rw Engine
chmod +x "/Users/Shared/Epic Games/UE_5.3/Engine/Build/BatchFiles/Mac/XcodeBuild.sh”
chmod +x "/Users/Shared/Epic Games/UE_5.3/Engine/Build/BatchFiles/Mac/ThinApp.sh”

username change to your mac user

  1. Then you could build your project in UE. Build will succeed, but the final file will not contain CFBundleVersion and CFBundleShortVersionString, to fix this you need after build go to XCode project and setup this 4 inputs in your target app with your build version number:

Build Settings → Versioning (All 3 inputs: Current Project Version, Generated Versioning Source FIlename, Generated Vesioning Variable) and General → Identity → Build.

All 4 inputs must contain same number. Then you go to Product → Archive in XCode menu on top and you will get final .xarchive. Go to Window → Organizer, and then Distribute App.

6 Likes

Is your 5.3 a source build or is it just the files you downloaded via command line from source and everything else is from Epic Games Launcher?

Just from Epic Games Launcher

I finally found the solution. And it is actually very simple.
In your Engine install directory you have to open BaseEngine.ini
In there you have to set the following variable to false:

[/Script/MacTargetPlatform.XcodeProjectSettings]
bUseModernXcode=false

This forces the Engine to use the old distribution packaging method.
It was not enough to uncheck it in the project settings. It needs to be set in the base engine.ini file.

2 Likes

This worked for me…but…why or how can this be a thing that happens?

Is this my fault somehow or is this a bug?

Should I not be using the epic games launcher to install the engine and be pulling it from github all the time?

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.