Application Loader - Error 90207

I am getting an error inside the ApplicationLoader whenever I attempt to upload my iOS package to iTunes Connect.
The error being: ERROR ITMS-90207: “Invalid Bundle. The bundle at ‘[FileName].app/[FileName].app’ does not contain a bundle executable.”

I’ve only found one other thread on the forums dealing with this issue, Application Loader Error-90207 - Mobile - Epic Developer Community Forums, but unfortunately the thread doesn’t contain a clear solution to the issue.

I have attempted multiple clean/rebuilds with the UE4 editor as well as packaging the project, via the editor, numerous times, yet I am continually greeted with this issue whenever I try to upload the .ipa to iTunes Connect.

My iOS build options are set up to support armv7 and arm64 in shipping, which I’m fairly certain are the defaults.

I’ve extracted the .app from the .ipa file and it’s definitely signed correctly according to “codesign -dv [FileName].app”. Looking within the .app contents shows that the file contains both a Unix Executable File a second .app file. Both of which are named the same as the parent .app file. I have no idea if this is intentional since I haven’t dealt with iOS builds much but I imagine it’s not. Here’s a screen cap from …/Payload/[FileName].app/ to clearly explain what I’m talking about.

56773-[filename].app+-+contents.png

Taking a look at the contents of …/Payload/[FileName].app/[FileName].app shows 3 files. CustomResourceRules.plist, info.plist and PkgInfo. Here’s another screen showing the contents:

56774-[filename].app:[filename].app+-+contents.png

As an experiment, I’ve attempted to remove the [FileName].app/[FileName].app, resigning the .app file and repacking it into the .ipa however I am then greeted with the following when I try to upload via the ApplicationLoader: ERROR ITMS-90166: “Missing Code Signing Entitlements. No entitlements found in bundle ‘[BundleName]’ for executable ‘Payload/[FileName].app/[FileName]’.”" I realise I could go down this route and fix all the issues that arise after the resign/repack but I feel like this isn’t getting to the root of the issue. If I have to though, I will happily do this work around.

I’ve attempted to attach the log file but for some reason it’s not attaching. I’ll keep trying to attach it, but if it’s possible, I’d prefer to send the logs privately. Also, if it’s any help I’m currently running on OSX Yosemite 10.10.5 using Xcode 6.4 and ApplicationLoader 3.1.

I’ve tested packaging an empty C++ project, for which I also have a log, and the .app from that package only contains the Unix Executable File. Uploading the .ipa for this project to iTunes Connect works perfectly fine without issue.

I’ve been dealing with this for a few days now and any help would be amazing!

I’ve managed to fix the issue after trying the one thing I probably should have tried before posting my question.
The fix I found was to delete the contents of the [ProjectDirectory]/Binaries/IOS and re-package the project via the UE4 Editor.

The error is caused by a corrupted build. I could be wrong but from what I understand somewhere along the line, the final .app file managed to contain an empty copy of itself, which it shouldn’t, thus corrupting the file.
Whenever Unreal packages the project, it overwrites the .app file within the [ProjectDirectory]/Binaries/IOS and all the files within it (since a .app file is essentially a directory) before packing it in an .ipa and copying the final .ipa to your desired directory. Seeing as the .app file that exists within the final .app file isn’t meant to be there, Unreal doesn’t seem to check for the file thus not overwriting or removing it. This results in all the builds after the initial corrupted build to also become corrupted. Deleting the contents of the [ProjectDirectory]/Binaries/IOS folder seems to fix that since it’s has to completely rebuild the final .app file, instead of overwriting what’s already there.

Hopefully someone else finds this useful.