After submitting an app update using Application Loader, I got this email from Apple:
We have discovered one or more issues with your recent delivery for "[App Name]". To process your delivery, the following issues must be corrected:
Invalid Swift Support - The SwiftSupport folder is missing. Rebuild your app using the current public (GM) version of Xcode and resubmit it.
Once these issues have been corrected, you can then redeliver the corrected binary.
I have confirmed that this binary was built with the latest Xcode GM (7.3.1), so that is not the issue. I have seen a wide variety of potential fixes for this problem online but was hoping that by giving further details somebody might be able to help me figure out the specific solution.
- Submitted an IPA file using Application Loader 3.5 with no problems.
- The previous version of the app does not use Swift, but this update does.
- The "Embedded Content Contains Swift Code" build setting is set to
NO
. My understanding is that this should only beYES
if we have a pure Objective-C target that depends on a Swift or mixed target. - The project uses CocoaPods, but nothing has changed in our pods for this update.
- The previous version of the app included a WatchKit app and extension, but this update does not.
- Inside an
xcarchive
generated with the same build, theSwiftSupport
folder is there. It contains a subfolder callediphoneos
which contains several Apple Swift libraries likelibswiftFoundation.dylib
. - If I rename the
.ipa
file to.zip
and unarchive it, its app package does not contain aSwiftSupport
folder, but does contain aFrameworks
folder with the same Swift dylibs.
The solution here was in this answer. We needed to use the new
-exportOptionsPlist
flag withxcodebuild
instead of the older-exportFormat
and-exportWithOriginalSigningIdentity
flags. The plist just needs to have themethod
key set toapp-store
.You should choose "Save for iOS App Store Deployment" instead of "Save for Ad Hoc Deployment" option at the time of creating ipa file.
The root cause of this is that the provisioning profile is ad-hoc and it doesn't create
SwiftSupport
directory in the ipa. The folder is created usingapp-store
as the export method, so it worked for me when I updated my provisioning profile toapp-store
.Reference
In my case, I just added redundant swift file to the project and it solved the problem.