环境:Xcode 7 GM
我使用Xcode成功上传了iOS应用,没有错误。这个应用程序是用Objective-C和Swift编写的。
然而,在成功上传后,我收到Apple发来的这封电子邮件,说明了这个错误:
无效的快速支持 - 我们发现您最近为XXXXX(我的应用名称)投放了一个或多个问题。要处理您的交付,必须纠正以下问题:
无效的Swift支持 - SwiftSupport文件夹为空。使用当前公共(GM)版本的Xcode重建您的应用程序并重新提交。
一旦纠正了这些问题,您就可以重新更新已更正的二进制文件。
任何人都有解决这个问题的方法吗?
我已经确认了以下问题。
" SwiftSupport /的iPhoneOS /"档案馆中的库(.xcarchive文件)等同于" Products / Applications / myApp.ipa / Frameworks /"
我的"有效架构"设置为" $(ARCHS_STANDARD)"显示" armv7k"。
配置文件分别设置为已在iTunes连接中创建的开发和发布。
并且,在我的"编辑计划"中,在归档时取消选中测试目标。
答案 0 :(得分:14)
在“Xcode-> Product-> Archive”之后尝试导出时 你应该选择“为ios app store部署保存”选项
同样的问题困扰了我几天, 以上设置可以解决这个问题。
无论“嵌入内容包含swift代码”是肯定还是否。
答案 1 :(得分:14)
此页面上有许多相互矛盾的答案..对我来说有用的是here,它只是为iOS应用商店部署选项选择了一个保存(我实际上对应用商店不感兴趣)发布..我想简单推送一个testflight内部测试版本)..
话虽如此,我有办法在提交之前验证您的ipa是否会获得批准:
如果你得到一个文件夹(与.ipa文件同名),其中包含以下子文件夹:
然后你很高兴,但如果你只看到Payload
文件夹,那么你必须再试一次
也有几个指针
SwiftSupport
文件夹..但后来我得到了各种各样的副作用..无法正常工作我认为这是由于xcode的一些错误(用Xcode 8.0 build(8A218a)写这个...所以继续尝试你的运气,直到它工作..只是不要指望它的一些可靠的解释
答案 2 :(得分:10)
五步解决方案:
这有点不足,因为swift携带行李并且必须与早期版本和Objective C代码兼容。
我浪费了很多时间希望你会发现这很有用;)
答案 3 :(得分:3)
我在这里努力了几个小时,这对我有用。
在存档中,Xcode没有将快速库复制到 SwiftSupport / iphoneos 中,即使我的项目有" Embedded Content Contains Swift Code
"对所有目标设置为yes。它也没有将swift库复制到" AppName.app/Frameworks" 。所以我必须在提交前手动在档案中执行此操作:
将"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/lib*"
复制到 "Archive_folder/Products/Applications/AppName.app/Frameworks" and "SwiftSupport/iphoneos"
如果您的应用还有手表应用
复制
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/watchos" into "Archive_folder/SwiftSupport/watchos"
和 "Archive_folder/Products/Applications/AppName.app/Watch/AppName WatchKit App.app/Frameworks"
然后提交应用。
答案 4 :(得分:2)
使用Save for iOS App Store Deployment
代替Save for Ad Hoc Deployment
Xcode导出选项为我解决了这个问题。与直觉相反,即使对于TestFlight构建,也应该使用第一个选项。
答案 5 :(得分:1)
将“嵌入内容包含Swift代码”设置为$(inherited)
为我工作。
执行CocoaPods命令pod install
后的警告帮助我找到了这个。
[!] 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 <--------------
- Remove the build settings from the target.
答案 6 :(得分:1)
这是我更改项目设置后发生的事情。 转到“文件”>“项目设置...”(或在某些情况下为“工作区设置...”),然后从“构建系统”下拉列表中选择“使用共享设置”。
答案 7 :(得分:1)
在通过 Transporter 应用程序将.ipa
文件上传到App Store Connect之后,我收到了同一封电子邮件。以下是我出错的地方:我使用临时分发应用程序。
以下步骤是解决我的错误的方法:
ExportOptions.plist
。method
属性的值为app-store
。.ipa
文件拖放到 Transporter 。就是这样!
答案 8 :(得分:1)
我在这个问题上花了整整一整天,以上解决方案均无效。通过将目标tvOS从13降低到11,我摆脱了这个错误。原来的位置。那恢复了SwiftSupport文件夹。尚待解决的问题是这是由于我们的规定不允许我们以tvOS 13为目标-还是因为以tvOS 13为目标而创建的应用程序是14mb,而tvOS 11是44mb和不同的应用程序文件夹结构。
答案 9 :(得分:0)
要从 SwiftSupport
中删除 .ipa
文件夹,我使用了以下脚本
ipa_path="${DIR_ON_CI}/ipa_name.ipa"
zip -d "${ipa_path}" "SwiftSupport*"
您需要设置正确的 ipa_path
。在我的情况下似乎没有其他任何工作,并且该应用程序构建在 CI 上,我可以在导出存档后访问 .ipa
。
答案 10 :(得分:0)
在尝试了所有这些解决方案之后,我以幸运的方式通过了它。但我认为这个链接对你有用Invalid Swift Support / invalid implementation of swift。我按照这些步骤重新启动我的MAC,现在一切正常:)
答案 11 :(得分:0)
在2020年8月使用Xcode 11.6对该解决方案进行了尝试,并且有效。
SwiftSupport
答案 12 :(得分:0)
我设法通过取消选中“ Strip Swift符号”选项来解决此错误。
答案 13 :(得分:0)
我在这个问题上苦苦挣扎了一段时间,但上述方法均无效。在最后一次绝望的尝试中,我从存档中删除了SwiftSupport文件夹。
令我惊讶的是,它成功上传并完成了处理。希望这对某人有帮助。
答案 14 :(得分:0)
我的问题是我使用adhoc配置文件提交给TestFlight(必须是分发配置文件)。 Apple错误消息!
答案 15 :(得分:0)
App Store构建提交问题:
无效的Swift支持 - 缺少SwiftSupport文件夹。使用当前公共(GM)版本的Xcode重建您的应用程序并重新提交。
<强>解决方案:强>
在大多数情况下,我们发现此问题是由于通过App Loader提交申请以及我们通常的做法使ipa成为管理器&gt; App Archive&gt;在Finder中显示&gt;显示包装内容&gt;产品&gt;应用程序&GT; OurProjectName.app将此应用程序复制到Payload文件夹并压缩并使用App Loader使ipa 文件在App Store上提交。这对于仅提交包含项目的客观c文件很方便。
但是如果你的项目包含任何swift类和它的用法,那么会有一些变化。如果您的项目包含带有Objective C项目的swift类,则IPA内容结构与附加的屏幕截图略有不同。
要修复此问题,请直接从Xcode [OR] 提交应用程序,如果您想通过App Loader提交应用程序,而不是首先使用Xcode管理器的导出选项导出ipa并提交这些ipa文件通过App Loader应用商店。
参见参考屏幕截图如下:
Hurrey !!!你的问题将被修复:) :) :)
答案 16 :(得分:0)
当您将ipa
设置为export_method
而不是ad-hoc
的{{1}}上传{I}时,您也会收到此错误...
答案 17 :(得分:0)
将始终嵌入Swift标准库设置为是仅对于与您自己的依赖于Swift的框架链接的Objective-C目标是必需的。如果您没有链接(即使用)依赖于Swift的内部框架,Xcode将在您的存档中嵌入Swift标准库,只要至少有一次导入Swift文件中的Swift标准库,它是构建目标的一部分。
换句话说,如果你的目标有一个不导入任何Swift标准库的Swift文件 - 例如通过“import Foundation” - 那么 Xcode不会将Swift标准库复制到存档中强>
此问题的解决方法是为了确保目标中至少有一个Swift文件导入swift标准库(例如“import Foundation”)。
Daniel Jalkut有一个very informative post about Swift dependencies,可以解释这个问题。
答案 18 :(得分:0)
以上是我现在正在做的解决这个问题,因为上面的方法停止了工作。请记住,我的代码的主要应用程序是Obj-C,我的手表应用程序是Swift。
归档后,我的XCode不会创建“[archive folder] / SwiftSupport / iphoneos”,但会创建并填充“[archive folder] / Products / Applications / [app name] .app / Watch / \ WatchKit \ App.app/Frameworks“与Swift dylibs。所以我创建了以下软链接:
ln -s“[存档文件夹] /Products/Applications/.app/Watch/ \ WatchKit \ App.app/Frameworks”“[存档文件夹] / SwiftSupport / iphoneos”
然后当我通过XCode Organize提交时,它会毫无错误地被接受。
如果您只是复制文件而不是链接它们,那么您将面临超过50MB限制的监视应用程序的风险。