Invalid Swift Support / The SwiftSupport folder is empty

匿名 (未验证) 提交于 2019-12-03 02:06:01

问题:

Environment: Xcode 7 GM

I uploaded iOS app successfully using Xcode without error. This app is written in Objective-C and Swift.

However, immediately after successful upload, I got this email from Apple stating this error:

Invalid Swift Support - We have discovered one or more issues with your recent delivery for XXXXX(my app name). To process your delivery, the following issues must be corrected:

Invalid Swift Support - The SwiftSupport folder is empty. 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.

Anybody has a solution against this issue?

I have already confirmed below issues.

"SwiftSupport/iphoneos/" libraries in archives(.xcarchive file) is equaly to "Products/Applications/myApp.ipa/Frameworks/"

My "Valid Architectures" setting is "$(ARCHS_STANDARD)" displaying "armv7k".

Provisioning profile is set to Dev and Release which has been created in iTunes connect, respectively.

And, in my "Edit scheme", Test target is unchecked at Archive.

回答1:

important note: this only works for projects that do not use swift, see comment below

I just met the same issue and resolved it by making the following change - If you used to have Swift files in your project but then removed them, you only need to set "Embedded Content Contains Swift Code" to NO in Build Options.



回答2:

when try to export after "Xcode->Product->Archive" you should choose "save for ios app store deployment" option

The same problem confused me a couple of days, the above setting can solve this problem.

no matter "embedded content contains swift code" is yes or no.



回答3:

There are many conflicting answers on this page.. what worked for me was the one mentioned here, which is simply select a save for iOS app store deployment option (I'm actually not interested in an app store release.. I want to simply push a release for testflight internal testing)..

that being said, I have a way to verify that your ipa will be approved or not before submitting it:

  • drag the .ipa file into a new folder (call it analysis)
  • right click the ipa file and rename it to .zip (confirm the dialog to use .zip)
  • double click the zip file

here if you get a folder (with the same name as the .ipa file) that has the following subfolders in it:

  • payload
  • swiftSupport
  • Symbols

then you are good to go, however if you only see the Payload folder within.. then you gotta try again

also a couple of pointers

  • I've tried setting "Embedded Content Contains Swift Code" to NO, it worked just once then stopped working after that
  • I've ensured that I had no cocoapod errors.. that didn't help either
  • I've tried manually adding the SwiftSupport folder inside the archive as suggested here.. but then i got all sorts of side effects.. didn't work

conclusion

I think this is due to some bug with xcode (writing this with Xcode 8.0 build (8A218a).. so keep on trying your luck until it works.. just don't expect some solid explanation for it



回答4:

Five Step Solution:

  1. Go to build settings and make flag Embedded Content Contains Swift Code -> YES, if your code contains partial swift code or entirely made in Swift
  2. Archive your build using Xcode->Product->Archive
  3. Export the Archive Build you will suddenly see the difference build size will be 40+ MBs this is because XCode has added SwiftSupport folder which was missing
  4. Now upload this build using Application loader
  5. If this does not work check that if you have multiple XCode on your system goto Xcode->Preferences->Location->Command Lines Tools has the same latest or the same Xcode from drop down selected on which you have done the coding & vola it's done.

This is slightly a drawback as swift carries the baggage and has to be compatible with earlier version and Objective C code.

My many hours were wasted hope you will find this helpful ;)



回答5:

This error can happen if you use xcodebuild to export the IPA without specifying the -exportOptionsPlist option

See xcodebuild -help for the available keys, but you probably want a plist with at least the method key set to "app-store", like this:

methodapp-store


回答6:

I grappled with this for several hours and here is what worked for me.

In the Archive, Xcode did not copy swift libs into SwiftSupport/iphoneos even though my project had "Embedded Content Contains Swift Code" set to yes for all targets. Nor did it copy swift libs into "AppName.app/Frameworks". So I had to do that manually in the Archive before submitting:

copy "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/lib*" to "Archive_folder/Products/Applications/AppName.app/Frameworks" and "SwiftSupport/iphoneos"

If your app also has a watch app

copy

"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/watchos" into "Archive_folder/SwiftSupport/watchos" and "Archive_folder/Products/Applications/AppName.app/Watch/AppName WatchKit App.app/Frameworks"

Then submit the app.



回答7:

Setting "Embedded Content Contains Swift Code" to $(inherited) worked for me. The warning after executing the CocoaPods command pod install helped me to find this out.

[!] The `applewatch Extension [Debug]` target overrides the `EMBEDDED_CONTENT_CONTAINS_SWIFT` build setting defined in `Pods/Target Support Files/Pods-applewatch Extension/Pods-applewatch Extension.debug.xcconfig'. This can lead to problems with the CocoaPods installation - Use the `$(inherited)` flag, or  


回答8:

Using Save for iOS App Store Deployment instead of Save for Ad Hoc Deployment Xcode export option solved this issue for me. Counterintuitively, you should use the first option even for TestFlight builds.



回答9:

After tried all these solutions, I passed it in a lucky way. But I think this link is good for you Invalid Swift Support / invalid implementation of swift. I follow these steps and then restart my MAC, everything is OK now :)



回答10:

Here's what I am doing now to solve this issue since my method above stopped working. Keep in mind that my code's main app is Obj-C and my watch app is Swift.

  1. Make sure the "embedded Content Contains Swift Code" is set to:
    • YES for app target
    • NO for WatchKit Extension
    • YES for Watchkit App
  2. After Archiving my XCode will not create the "[archive folder]/SwiftSupport/iphoneos", but will create and fill the "[archive folder]/Products/Applications/[app name].app/Watch/\ WatchKit\ App.app/Frameworks" with the Swift dylibs. So I created the following soft link:

    ln -s "[archive folder]/Products/Applications/.app/Watch/\ WatchKit\ App.app/Frameworks" "[archive folder]/SwiftSupport/iphoneos"

Then when I submit via XCode Organize it is accepted without error.

If you simply copy the files rather than linking them then you risk the watch app exceeding the 50MB limit.



回答11:

Setting Always Embed Swift Standard Libraries to Yes is only necessary for Objective-C targets which link against your own frameworks which depend upon Swift. In cases where you are not linking against (i.e., using) an internal framework which depends upon Swift, Xcode will embed the Swift standard libraries in your archive as long as there is at least one occurrence of importing a Swift standard library in a Swift file which is part of the build target.

Xcode will not copy the Swift Standard libraries into the archive.

The fix for this issue is to ensure that at least one of the Swift files in your target is importing a swift standard library (e.g., "import Foundation").

Daniel Jalkut has a very informative post about Swift dependencies which sheds light into this issue.



回答12:

You also get this error when you upload an ipa that has a plist with export_method set to ad-hoc instead of app-store to itunes ...



回答13:

App Store build submission Issue:

Invalid Swift Support - The SwiftSupport folder is missing. Rebuild your app using the current public (GM) version of Xcode and resubmit it.

Solution:

In most cases we found this issue due to submitting application via App Loader and our usual practice to make ipa as Organizer > App Archive > Show In Finder > Show Package Content > Products > Applications> OurProjectName.app in copying this app to Payload folder and zip it and making ipa file to submit on App Store using App Loader. That is work fine for submitting only objective c files contained projects.

But there is some changes if your project contains any swift classes and usage of it. If your project contains swift classes with Objective C project, IPA content structure changed slightly different as attached screenshot.

To fix this issue, submit app directly from Xcode [ OR ] if you want to submit application via App Loader than first Export ipa using Export option from Xcode organizer and submit those ipa file to app store via App Loader.

See the reference screenshot as below:

Hurrey!!! Your issue will be fixed :) :) :)



回答14:

My problem was that I was using an adhoc profile to submit to TestFlight (has to be a distribution provisioning profile). Great error messages Apple!



回答15:

You should choose "Save for iOS App Store Deployment" option at the time of exporting ipa file.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!