iOS Build with 4.6 Successful, Submission through Application Loader has an Error

So our App is building and submitting fine under 4.5.1, but we ported up to 4.6 yesterday. Things went pretty smoothly until we tried to submit though the Application Loader when we received this error.

ERROR ITMS-9000: “No architectures in the binary. Lipo failed to detect any architectures in the bundle executable.”

Again, the game is building without error, but Apple is not allowing it to submit. Any ideas?

Having same issue here.

Me too, same issue. Please let us know if you figure it out.

same issue here

[edit] - looks like this may be the issue, though i haven’t gotten this to work yet:
Info.plist entries bug

has anyone on this thread been able to successfully upload an ipa file to the application loader? the solution at the link mentioned in the prior comment hasn’t solved my problem yet, as i still get the error mentioned in both threads.

I have found a clue to this problem. NOTE: I am having the same exact issue with UE v4.6.1 builds for iOS.

If you take the IPA file created by v4.6.1 and unzip it on a Mac, you get a Payload directory. Inside that is the APP file. And inside of that are the executable and all the data files. If you run the lipo command line app on the executable, it says:

 ***fatal error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: truncated or malformed fat file (offset plus size of cputype (16777228) cpusubtype (0) extends past the end of the file) UE4Game***

Doing the same sequence on an old build made with v4.5.1, which uploaded correctly to iTunes, I get:

 ***input file UE4Game is not a fat file
 Non-fat file: UE4Game is architecture: armv7***

My conclusion is that the UE4Game executable being bundled into the IPA file is CORRUPT.

i haven’t tried this yet, as i’m away from my machine that compiles for distribution, but have you tried packaging iOS with only the armv7 option checked and armv7s and armv64 unchecked? i wonder if including multiple libraries is throwing off the link, or if including the latter is impacting packaging. most of my testing is deployed to either the iPhone 5 or 4th generation iPad both of which are armv7.

Hi Paradoc,

I have tried editing the info.plist file and explicitly adding armv7s and arm64 flags and then rebuilding and attempting upload to iTunes. Have also tried explicitly NOT including those flags in the info.plist, rebuild, upload, etc. None of the variations have helped.

Now, inside of the Unreal editor, in the iOS settings, there are checkboxes for toggling armv7s and arm64 on and off. Unfortunately these are all grayed out. If you hover over them it says you can only use them if you download the editor source from GitHub and compile it yourself. Which sounds like a nightmare.

I got a build to upload to iTunes.

Starting with the fact that development builds install and run correctly on a locally connected iPad, I tested the IPA file created by the DEVELOPMENT build process. The embedded executable reports as armv7 using lipo. Uploading this file to iTunes Connect worked as well. It does issue a warning about 64 bit support being needed on Feb. 1st., but seems to be happy otherwise.

The trick is, you have to go into Project Settings and on the Packaging page, select DEVELOPMENT for the Build Configuration, and make sure that the For Distribution checkbox is off in the fold out panel at the bottom of that section. When you go to File->Package Project->Build Configuration, make sure that DEVELOPMENT is the selected mode. Then do File->Package Project->iOS as normal.

Check the Output Log text after the packaging process completes. Near the end of all the text it should be a section stating what Provisioning File it selected. Make sure it chose your App Store provisioning profile, and NOT your development / ADHOC profile. Choosing the right one from the GUI is not enough, since all the GUI does is copy the specified file into a central directory used by Unreal when it packages. So in my case, on a PC, I had to go into:

C:\Users\Username\AppData\Local\Apple Computer\MobileDevice\Provisioning Profiles

and manually delete the ADHOC profile I used for testing, so that the only one left in the directory was the App Store profile. When the packaging goes to sign the app, if it does not find the ADHOC provision it would normally use for DEVELOPMENT builds, it will fallback and use the App Store profile.

Just another note: we were able to get the arm64 checkbox in the GUI to turn off by editing the DefaultEngine.ini file in the project’s Config folder, and setting the line for arm64=false. After restarting the Unreal editor, the arm64 checkbox was turned off.

Unfortunately, this had no affect on the executable included in the IPA file in SHIPPING builds. The executable was still corrupted as reported by the lipo command line utility, and would not upload to iTunes correctly.

Honestly, did no one at Unreal test v4.6.1 to see if the executable for Shipping versions was valid?

just followed your steps and submitting worked this time. thanks much for the help! i didn’t make any changes to the *.ini and noticed that by default the checkbox for the arm64 is not checked in development but it is for shipping. so when packing for shipping maybe there was supposed to be a library being pulled from development that never existed, hence the missing architecture error? just a guess, but not my area of expertise.

We have the same issue in Shipping, basically in 2 days you won’t be able to upload build without 64 bit binary. This functionality is CRITICAL for upcoming 4.7 release guys!

I got the same error. This is highly annoying and should be fixed asap. Maybe a quick fix for 4.6.1 if possible ?