Answers:
对我来说,以前的解决方案都不起作用。我们发现ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
在构建设置中有一个标志(在早期版本中:“嵌入式内容包含Swift代码”)需要设置为YES。默认情况下是NO!
如果在将Objective-C项目转换为开始使用Swift的过程中出了点问题,则会发生此错误。问题是链接器构建设置从未正确配置,因此您必须手工完成。查找“运行路径搜索路径”构建设置并将其设置为:
$(inherited) @executable_path/Frameworks
编辑:我还应该补充一点,这些错误的出现是由其他完全由其他原因引起的-苹果公司对Swift本身进行了更改,从Xcode 6.1或6.1.1开始。唯一的解决方案似乎是退出Xcode,在Keychain Access中销毁证书,转到会员中心并删除所有证书和配置文件(商店中应用程序的配置文件除外-您无法删除它们),然后启动从头开始的整个证书申请过程。
我不太确定为什么这个问题会被否决,当我第一次尝试在现有项目中使用Swift时,我也遇到了这个问题。Xcode重新启动也为我解决了这个问题。
我在这个问题上搜索了很长时间。有多个原因导致此问题。
如果面对Objectice C项目中的Swift代码/库时遇到问题,则应尝试解决方案1-2-3
如果您使用新的Swift项目解决方案4遇到此问题,则将是最合适的解决方案。
重新启动Xcode,然后重新启动计算机和iPhone
转到项目构建设置并进行设置Always Embed Swift Standard Libraries
(以前Embedded Content Contains Swift Code
)标志为YES
转到项目构建设置并添加@executable_path/Frameworks
到Runpath Search Paths
选项
如果以上方法均无效,则应该这样做。如AirSign的帖子所述,苹果似乎是忍者补丁证书
在室内证书
Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, O=Company Name, C=FR
他们添加了一个名为OU的新字段
Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, OU=269J2W3P2L, O=Company Name, C=FR
所以您应该重新创建证书并进行配置
@executable_path/../Frameworks
在iOS项目需要它的地方..
,中间没有。如果已将目标从一个操作系统转换到另一个操作系统,则更改此值很重要。
以我为例,我试图导入一个自定义框架,并收到类似的错误。原来,我不得不将框架导入到Embedded Binaries中,而不是导入到Linked Frameworks and Libraries中。
嵌入式二进制文件位于项目设置->->常规下
对于在Adhoc / Enterprise发行版本中遇到此问题的开发人员,
从开发人员门户创建生产证书,然后重新生成分发配置文件。将它们下载并安装在Mac上。确保在Xcode构建设置中选择了正确的配置文件,然后重新构建应用。
解决方案5:
就我而言,应收账款答复中提到的所有解决方案都非常有用,但没有一个奏效。我通过在项目目标的“常规”部分的“嵌入式二进制文件”部分添加快速库解决了我的问题。也许是由于我在工作区中包含了我的swift框架?无论现在编译什么!准备好Swift,我在这里!
对我而言,此问题是由于我的Apple全球开发者关系认证中心无效。
从这里下载: https //developer.apple.com/certificationauthority/AppleWWDRCA.cer
将其拖放到“钥匙串访问”中,清理项目,然后运行。
尝试按住Alt键,然后转到“产品”->“清理构建文件夹” ...
希望对别人有帮助。
发生这种情况的原因很多。刚刚度过了一个愉快的周末,又发现了另一个导致此问题的原因(代码签名的顺序),我想创建一个汇总答案,将所有可能的解决方案结合在一起:
DerivedData
和Build
目录。在首选项下查找的位置DerivedData
。 Build
应该在您的项目文件夹中。@executable_path/Frameworks
。 那是简单的东西。如果您正在执行自己的命令行构建,则可能正在创建自己的.ipa
文件以进行上载。在这种情况下,您需要确保以下事项:
SwiftSupport/iphoneos
的版本与中的版本相同。Contents/YourApp.app/Frameworks
因为Swift在两个版本之间尚不兼容,因此必须确保这些版本是构建应用所使用的版本。您可以在下找到这些库/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos
。codesign
访问库和框架文件(Frameworks
在.app
文件夹中),然后对整个.app
树进行签名。该.app
树必须使用entitlements.plist
而不是框架进行签名。希望当Swift 3.0推出并且我们不再需要将Swift与我们的应用程序捆绑在一起时,整个问题都将消失。
我的项目是一个带有一些Objective-C类的Swift项目。使用旧的inHouse(企业)证书签名时,我遇到了同样的问题。
以下步骤为我解决了这个问题。
Runpath Search Paths
构建设置设置为:$(inherited) @executable_path/Frameworks
。解决方案6:
在我们的案例中,企业发行证书已被撤销。生成新证书并更新配置文件可解决此问题。
(此错误似乎有多种不同的原因。希望这对某人有帮助。)
我也遇到过同样的问题,设置正确的代码签名身份可以解决此问题(构建设置->代码签名身份)。
按照Apple的技术问题: “在iOS 8发行后创建的所有企业和标准iOS开发人员证书的正确位置都有新的Team ID字段,以允许运行Swift语言应用程序”
如果您通过嵌入式二进制文件添加了三个框架,它们也将被添加到链接框架和库中。删除链接框架和库中的三个条目将解决此问题。
重新启动Xcode并重新启动Mac等魔术方法对我不起作用。
我尝试了在Web上找到的所有解决方案,包括Apple和新证书。没有成功。
经过6个月的尝试,我运行xcode的唯一方法是在macbook上创建一个新帐户。
通常,如果将此库添加到构建阶段中的“复制文件”部分中,该错误将消失。
这些解决方案似乎都不对我一直有效。在每两次成功运行之后,它将再次失败。对我来说,“嵌入的内容包含Swift代码”标志始终设置为YES。
原来我将Xcode设置为6.3兼容。将其更改回3.2兼容解决了它:
当我在旧项目中添加新的带有Swift语言的Today扩展目标时,就会显示出来。 通过将项目更新为推荐设置可以轻松修复。Xcode 6.0.1
otool