无效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。
为了解决这个问题,请按照下列步骤操作:
- 打开你的Xcode项目
- select产品>计划>编辑计划
- 点击左侧边栏中的生成
- 对于您的testing目标,请取消选中存档checkbox
- 点击closuresbutton
- select产品>存档
- 提交最新的档案到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
选项并提供method
和teamID
。 搞砸了,但现在起作用。
五步解决scheme:
- 去build立设置和标志embedded式内容包含Swift代码 – > 是 ,如果你的代码包含部分Swift代码或完全在Swift
- 使用Xcode->产品 – >存档来存档您的版本
- 导出存档生成,你会突然看到差异生成的大小将是40 + MB这是因为XCode已添加SwiftSupport文件夹丢失
- 现在使用Application loader上传这个版本
- 如果这不起作用检查,如果您的系统上有多个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,以及使用Release
configuration(不确定哪一个修复了它)最终工作。 这是我的gym
系列:
identifier = "de.xxx.yyy" config = "Release" ad_hoc = false scheme = "Schema" gym(verbose: false, scheme: scheme, codesigning_identity: "iPhone Distribution: YTB)", configuration: config)