Missing Provisioning Profile

In 5.3 (with a lot of troubles) but I setup IOS builds, everything works fine, but after build when I try to deliver app through Transporter it gives me an error:
Asset validation failed (90174)
Missing Provisioning Profile - Apps must contain a provisioning profile in a file named embedded.mobileprovision. (ID: 733420d7-21c8-4345-a9d6-e6bf285f2971)

Does anyone got same issue and how to fix it?

Hi,
Can I ask you for a bit more info about this issue?

  1. Were you using Transporter under Windows or Mac?
  2. How did you build the app? On a mac or with a remote mac build from Windows?
  3. Is this for a blueprint only project or does it include any C++ code?
  4. Are you using the new “Modern Xcode” build system?
  5. Have you successfully uploaded a build before using your app’s distro cert?
  6. If on a Mac, are you able to upload to the AppStore using Xcode’s built in AppStore uploader? (this is the preferred way of uploading TestFlight builds)

Thanks!

Thanks for your help, I already solved it :blush:

What was the solution? I’m getting this error now.

I am using the Transporter on Mac.
I am packaging the app from Unreal using the shipping settings on a mac.
I am not using the modern xcode feature. When I use that feature it builds a .app file instead of a .ipa file so I am avoiding that.
We have used this distro cert before but not this provisioning profile.

Not sure what you mean by Xcode’s built in AppStore Uploader. From what I am seeing XCode 11 removed the app uploader and transporter is the way to go.

Would you mind share your solution? - I’ve got the same on 5.3.2

Yes I’ve got the same error, please help us @EthelianDev

Hi @ickydime, @EthelianDev, @axmetyshka and @Lykrate,

We recommend using Xcode14.2+ to upload archive builds to the AppStore. We do test this often to verify it’s working. We also strongly recommend using the new “modern” Xcode flow (as described here). It uses a lot more of the recommended Apple Xcode workflow and will allow adding extra features in the future.

To create an Archive build for upload, just enable the “Packaging → For Distribution” & “Platform-iOS → Generate Xcode archive package” options in Settings and then create a Shipping Package build. Open Xcode with the “UE5 (IOS)” workspace file and under Window->Organizer->Archives, select the freshly created archive and choose “Validate App” or “Distribute App” (I recommend “Validate” first to see if there’s any issues). The “Distribute App” button will give you several options for App Store type (ie: TestFlight, Enterprise, Custom, etc) See the screenshot below for a default 3rd person template project archive I created via the Editor using the steps above.

However, if you really need to create an ipa, it’s easy enough. Just follow these steps:

  1. Create a folder named “Payload”.
  2. Copy the . app bundle into the folder.
  3. Compress the folder to a ZIP file.
  4. Change the file extension from .zip to .ipa.

You now have an ipa file. Hope this helps! Cheers

Adam
Mobile Platform (Apple)


1 Like

I’ve got it working with legacy flow finally.

  1. Because of strange configs merging in UE you need to disable modern signing in BaseEngine.ini in Shared Engine folder as well as in DefaultEngine.ini in project’s folder:
    “/Users/Shared/Epic Games/UE_5.3/Engine/Config/BaseEngine.ini” and “$PROJECT_HOME/Config/DefaultEngine.ini”
[/Script/MacTargetPlatform.XcodeProjectSettings]
bUseModernXcode=False
bUseAutomaticCodeSigning=False
  1. Update Xcode and Xcode utilities if possible. We are using Xcode 15.1
  2. Logout from development account in Xcode.
  3. Install certificates and keys in Login Keychain or System Keychain depends on how you working with them and provide access for codesign and Xcode
security import certificates.p12 -k ~/Library/Keychains/login.keychain-db -t priv -P certificates_password -T /usr/bin/codesign -T /Applications/Xcode.app
security set-key-partition-list -S apple-tool:,apple:,codesign: -s ~/Library/Keychains/login.keychain-db
  1. Copy provisioning profiles in “~/Library/MobileDevice/Provisioning Profiles/” and name them same way as you will used in IOSRuntime settings in DefaultEngine.ini:
[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
bUseModernXcode=False
bUseAutomaticCodeSigning=False
MobileProvision=com.example.project.distribution.mobileprovision

Don’t forget to set other required parameters in DefaultEngine.ini like

[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
bAutomaticSigning=False
BundleIdentifier=com.example.project
BundleName=com.example.project
BundleDisplayName=ExampleProject
MobileProvision=com.example.project.distribution.mobileprovision
SigningCertificate=iPhone Distribution: Example Project Company (1234567890)
IOSTeamID=1234567890
VersionInfo=0.1
  1. On 5.3 in “/Users/Shared/Epic Games/UE_5.3/Engine/Source/Programs/UnrealBuildTool/Platform/IOS/UEDeployIOS.cs” they changed platform in generated plist which may prevent from successful processing on TestFlight(infinite upload processing):
492c821
< 			Text.AppendLine("\t\t<string>iPhoneOS</string>");
---
> 			Text.AppendLine("\t\t<string>iPhoneOS iPhoneSimulator</string>");
There is a parameter for extending plist content - AdditionalPlistData in '[/Script/IOSRuntimeSettings.IOSRuntimeSettings]' section of DefaultEngine.ini, which can be used to replace platform to iPhoneOS explicitly:

[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
AdditionalPlistData=CFBundleSupportedPlatformsiPhoneOS


6. Using the same AdditionalPlistData you need to set CFBundleVersion concatenated from VersionInfo parameter and build number for instance:

[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
AdditionalPlistData=CFBundleSupportedPlatformsiPhoneOSCFBundleVersion0.1.999

VersionInfo from '/Script/IOSRuntimeSettings.IOSRuntimeSettings' from DefaultEngine.ini is the CFBundleShortVersionString in the plist.

7. If you are using AutomationTool command to build package you need to remove archive command because it now made automatically and in case you will set it it will try to overwrite locked with write lock ipa file - remove following command line parameters:
-archive \
-archivedirectory="${PROJECT_HOME}/Binaries" \

8. Use altool for ipa deployment:

xcrun altool --upload-package “$PROJECT_HOME/Binaries/IOS/Distro_ExampleProject-IOS-Shipping.ipa”
–type IOS
–team-id 1234567890
–apple-id 987654321
–bundle-id com.example.project
–bundle-version 0.1.999
–bundle-short-version-string 0.1
–username apple_dev_user@example.com
–password 1234-5678-9876-1234

Where are:
  - team-id - your apple team id from https://developer.apple.com/
  - apple-id - your application id from https://appstoreconnect.apple.com/
  - bundle-id - same as set in DefaultEngine.ini
  - bundle-version - CFBundleVersion
  - bundle-short-version-string CFBundleShortVersionString
  - username and password - username and key pair from https://appstoreconnect.apple.com/access/api

I guess that's it.

Hi,
If anyone is struggling with this error “Missing Provisioning Profile” during transport or “development team” error during packaging. Just wanted to add my findings which might help someone. If you want to package the old method WITHOUT using auto signing and Modern Xcode, then it might help to edit the baseengine.ini of UE 5.3 from your defaultengine.ini of the project after setting the project setting of the project as you wish and importing certificates and provisions (maybe not all of them is necessary but if you DO change all in baseengine.ini remember to change later for other projects or in case of changing of the variables in your defaultengine.ini. Also if any of these are different or missing inside your defaultengine.ini then it might be helpful to add them there too):
[/Script/MacTargetPlatform.XcodeProjectSettings]
bUseModernXcode=false
bUseAutomaticCodeSigning=false
CodeSigningTeam=[INSERT]
CodeSigningPrefix=[INSERT]
IOSSigningIdentity=[INSERT]
IOSProvisioningProfile=[INSERT]

Bests,

Are there any updates on this? I’m following the exact steps and now XCode is crashing every time i try to validate the app

Edit

Now XCode no longer crashes however I get the error

“CFBundleVersion is empty but must be composed of one to three period-separated integers.”

Yeah, CFBundleVersion could be empty, you can right click on your xarchive → Show Package Contents → Right Click on info.plist isnside of Packed Content → Edit in any Text Editor → Simply Add

<key>CFBundleVersion</key>
<string>1.0</string>

1.0 Change to your CFBundleVersion value that you need

1 Like