无效Swift支持/无效执行的Swift

我想上传一个用swift编写的应用程序。 应用程序加载程序成功传递了应用程序,但几分钟后,我得到了一个苹果的答复告诉:

Swift支持无效 – 该包包含Swift的无效实现。 应用程序可能已经build立或签署了不合规或预发行工具。 访问developer.apple.com了解更多信息。

我使用xCode版本6.0.1(6A317),Swift iOS SDK 8.0,并用xcode构build应用程序。

我在哪里可以find有关如何获得swift的有效实施的任何信息? 苹果没有具体说什么。

谢谢

我有一个类似的问题。 要修复它,并能够推到iTunesConnect构build我必须做到以下几点:

  • 在目标设置中将标志EMBEDDED_CONTENT_CONTAINS_SWIFT设置为YES
  • 确保Build阶段不包含任何其他奇怪的目标
  • 从Xcode Logout所有的Apple开发者帐户,并login,只需要一个你想要推送的应用程序
  • with Xcode存档并提交应用程序with Xcode不是使用Application Loader。

为什么我需要从我所有的Apple开发者帐户注销?

因为Xcode不知道使用哪个帐户来上传二进制文件。 应用程序加载器在开始时问你,但是,上传的版本是无效的…

更新:

由于Xcode 7.1和新版本的Swift,我又得到了错误。 目前的解决方法是执行以下操作:

  • 在Xcode本地创build一个存档(不适用于我的CI)
  • 在pipe理器上, 导出为AppStore版本。
  • 使用Application Loader来上传二进制文件。

几分钟后(~10),iTunesConnect上的版本应该可用。

如果您使用Swift豆荚,问题可能来自cocoapods。 要修复它,请使用分支xcode7-invalid-swift-support-fix ( 用法 )。 或者通过编辑Pods / Target Support Files / Pods / Pods-frameworks.sh并在之后注释该块来手动执行

  # Embed linked Swift runtime libraries 

更多信息:

  • 拉请求: http : //github.com/CocoaPods/CocoaPods/pull/4221
  • 问题: http : //github.com/CocoaPods/CocoaPods/issues/4188

解决scheme的xcodebuild

  • 创build一个临时文件夹

  • 将ipa文件解压缩到临时文件夹

  • 在临时文件夹内创buildSwiftSupport文件夹
  • 将Payload / * app / framworks中的swift库复制到SwiftSupport文件夹
  • 打包来自包含临时文件夹(我们有Payload和SwiftSupport文件夹)的ipa文件。

在这里我的shell脚本添加到ipa的Swift库

https://github.com/huhuvipi/VH_ipa_packger

如果你现有的ipa文件,你只是:

path/to/package_ipa.sh /path/to/ipafile

你用命令行(xcodebuild)构build?

如果是这样的话:我遇到了同样的问题。 问题是生成的ipa文件是无效的。 它缺lessSwiftSupport文件夹。 当使用Xcode Gui构build带Swift的项目时,该文件夹由XCode添加。

这个问题在这个苹果开发者论坛主题中描述,并提供了一个开放的雷达票: https : //devforums.apple.com/message/1042117#1042117

你有没有安装任何其他版本的Xcode?

打开最新的Xcode,然后转到首选项(Xcode菜单 – >首选项),切换到位置选项卡,并validation命令行工具是否与您的Xcode版本匹配。

如果您通过xcodebuild或Xcode Server(或Xcode中Organizer窗口以外的任何其他软件) SwiftSupport ,则IPA缺lessSwiftSupport 。 看到这个问题的讨论 。

解决scheme主要是自己导出IPA。 CaveJohnson有一个命令,用正确的SwiftSupport导出一个IPA,所以你可以像这样build立一个IPA:

 cavejohnson xcodeGUITricks --archive-path my.xcarchive --new-ipa-path myapp.ipa 

我有同样的问题,并试图提出的一切,但总是失败…我的应用程序生成SwiftSupport文件夹,我刚刚解决这个解决scheme:

感谢您发送.ipa文件。 该问题是由SwiftSupport目录中的libswiftXCTest.dylib引起的。 该dylib被testing目标使用,并且对于开发构build来说是正常的,但是App Store的存档构build不应该包含这个dylib。

为了解决这个问题,请按照下列步骤操作:

  1. 打开你的Xcode项目
  2. select产品>计划>编辑计划
  3. 点击左侧边栏中的生成
  4. 对于您的testing目标,请取消选中存档checkbox
  5. 点击closuresbutton
  6. select产品>存档
  7. 提交最新的档案到App Store

我也有这个问题

我试图将EMBEDDED_CONTENT_CONTAINS_SWIFT的标志设置为YES和NO。 两人都不为我工作。

最后我和德鲁提到的CaveJohnson一起试了一下。 但是那也行不通。

最后我创build了一个新的项目,并插入了我的swift文件和框架等。就是这样!

解决scheme在我的情况: 创build一个新的项目

好的,我现在已经研究了好几个小时,终于find了解决办法。

为了预先制定答案,我做了以下工作: – 在以前的答案中尝试了一切 – 在Apple Tech支持的电话上花了一个小时。 – 阅读每个苹果开发者论坛,在他们的开发者networking中与“无效的快速”有关。 试过每个build议的解决scheme。

我终于卸载并重新安装Xcode,你知道什么,它现在的作品。 有时我不知道为什么这不是我的第一个解决scheme的想法。

检查你的代码签名。 使用自动签名时出现此错误。 我把我的开发configuration文件的开发版和生产configuration文件和错误消失了。

简单scheme:

嗨,我有同样的问题,下面是解决scheme:

只需将标志EMBEDDED_CONTENT_CONTAINS_SWIFT设置为“目标”,“项目”以及“testTarget”等各处的“设置”即可。

我发现,在主应用程序构build设置(并将其设置为“YES”的扩展名)中,将“embedded的内容包含Swift代码”从YES更改为NO将在手表(和手机)上运行。 在我上传二进制文件的同时,苹果公司必须对ITC后端进行更改,因为我上传的其他标有“无效二进制文件”的版本已恢复为“正在处理中”,随后又将屏幕传递给“未激活”。

因此,我只在扩展中提交了“embedded内容包含Swift代码”的版本以供审阅。

主要应用程序:embedded式内容包含Swift Code = YES(如果它是一个快速项目,否则否)

WatchKit扩展:embedded式内容包含Swift代码= YES(如果它是一个快速项目,否则否)

WatchKit应用程序:embedded式内容包含Swift代码=否(无论如何)

以下是使用命令行的解决schemehttp://www.matrixprojects.net/p/xcodebuild-export-options-plist/

基本上所有需要做的是创buildxcodebuild exportOptions plist文件,如下所示:

 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>teamID</key> <string>MYTEAMID123</string> <key>method</key> <string>app-store</string> <key>uploadSymbols</key> <true/> </dict> </plist> 

这里最重要的关键是方法应用程序商店

然后用存档运行xcode build

 xcodebuild -scheme MyApp -archivePath builds/MyApp.xcarchive archive 

之后,运行带导出存档的xcrun

 xcrun xcodebuild -exportArchive -exportOptionsPlist exportPlist.plist -archivePath builds/MyApp.xcarchive -exportPath builds 

我面临同样的问题。 我的解决scheme是更新我的xcode,然后创build新的项目,并将所有的工作粘贴到该项目

认真。 我花了两天在这个问题上,我尝试了上面的所有方法。 没什么可行的!Finall。 我用我的朋友的Mac。 而这一次,它的工作。 之后,我意识到,我从开发人员中心,而不是在Macapp store下载的Xcode。 所以我从我的Mac中删除所有的Xcode,并从app store重新安装Xcode,它的工作。 两个版本之间没有区别,它们共享完全相同的版本号。

在新的Xcode Swift项目更新后得到类似的错误,下面是我的解决scheme。

打开project.pbxproj文件,并删除下面的行

EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;

并能成功提交应用程序。

升级到Xcode 7后,我们遇到了类似的问题。必须添加-exportOptionsPlist选项并提供methodteamID 。 搞砸了,但现在起作用。

五步解决scheme:

  1. 去build立设置和标志embedded式内容包含Swift代码 – > ,如果你的代码包含部分Swift代码或完全在Swift
  2. 使用Xcode->产品 – >存档来存档您的版本
  3. 导出存档生成,你会突然看到差异生成的大小将是40 + MB这是因为XCode已添加SwiftSupport文件夹丢失
  4. 现在使用Application loader上传这个版本
  5. 如果这不起作用检查,如果您的系统上有多个XCode转到Xcode->首选项 – >位置 – >命令行工具具有相同的最新或相同的Xcode从下拉select你已经完成了编码和挥发完成。

这是一个小缺点,因为swift携带行李,必须与早期版本和Objective C代码兼容。

我的许多时间都被浪费了,希望你会觉得这有帮助;)

我想我应该分享,因为我花了几天的时间来解决这个问题。

大家一直说要设置EMBEDDED_CONTENT_CONTAINS_SWIFT = NO=YES

我有一个完全用Objective-C编写的iPhone应用程序和一个完全用Swift编写的Watch Kit应用程序。

我设置了EMBEDDED_CONTENT_CONTAINS_SWIFT = NO (项目目标,iPhone应用程序目标,testing,UITests和WatchKit)

我设置EMBEDDED_CONTENT_CONTAINS_SWIFT = YES的地方在WatchKit扩展中。 这解决了我的问题,我可以通过Xcode上传到App Store。

希望这可以帮助别人!

我可以通过打开存档,进入SwiftSupport并删除WatchOS的文件夹,因为它是空的。 我想我的Watch目标被设置为embeddedSwift,所以它包括文件夹,但没有产生任何东西。 所以iTC看到一个空的文件夹和错误了。 通过删除它的工作空文件夹。

对我来说,这是分配的工作。

转到 – > Xcode->产品 – >存档 – >导出

之后,一个文件夹将被创build与当前date。 您可以将它保存在某个地方供以后使用。 然后打开应用程序加载器,你可以从这里提交给itunesConnect。 一切都会被清除。 确保您通过在pipe理器窗口中单击“导出”选项来创buildBuild(.ipa)文件。 然后使用应用程序加载器将构build提交给iTunesConnect。

我希望它有帮助。 如果您需要更多信息,请与我们联系。

如果您有cocoapods,只需删除所有的豆荚,然后重新安装pod install

非常烦人,因为我使用Application Loader时,直接从Xcode上传和无效的Swift支持-22421错误

我实际上只是用一个完全不同的,不相关的,奇怪的修复来解决这个问题。 有上面的错误,但没有改变项目或构build环境中的任何东西。

经过大量的重build和上传周期后,事实certificate这是一个Ad-Hoc证书导致了这个问题。 使用fastlane并将gym标志ad_hoc设置为false,以及使用Releaseconfiguration(不确定哪一个修复了它)最终工作。 这是我的gym系列:

 identifier = "de.xxx.yyy" config = "Release" ad_hoc = false scheme = "Schema" gym(verbose: false, scheme: scheme, codesigning_identity: "iPhone Distribution: YTB)", configuration: config)