我想在我的iPhone 4s上运行一个Swift应用程序 . 它在模拟器上工作正常,我的朋友可以在他的iPhone 4s上成功运行它 . 我有iOS 8和Xcode 6的官方发行版 .
我试过了
-
重新启动Xcode,iPhone,电脑
-
清洁和重建
-
撤销并创建新的证书/配置文件
-
Runpath搜索路径是
$(inherited) @executable_path/Frameworks
-
嵌入式内容包含Swift代码'Yes'
-
代码签名标识是开发人员
以下是整个错误
dyld: Library not loaded: @rpath/libswiftCore.dylib
Referenced from: /private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/AppName
Reason: no suitable image found. Did find:
/private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/Frameworks/libswiftCore.dylib: mmap() error 1 at
address=0x008A1000, size=0x001A4000 segment=__TEXT in Segment::map() mapping
/private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/APPLICATION_NAME/Frameworks/libswiftCore.dylib
30 回答
我同时安装了多个版本的Xcode . 该框架是使用较新版本的Xcode构建的 . 我试图编译的应用程序是旧版本的Xcode . 当我使用相同版本的Xcode清理和编译框架和应用程序时,事情就有效了 .
就我而言,
我已设置
@executable_path/Frameworks
但我还必须设置“框架搜索路径”
改为
recursive
哪个适合我 .
我删除后开始收到此错误:
来自
Runpath Search Paths
在我的构建设置中 . 更换它修复了一切(谢谢源代码控制!)我不知道它是如何实现的,但似乎二进制文件需要找到它的嵌入式Swift运行时 .
在尝试了所有内容之后,我终于发现,构建似乎并不总是一次又一次地包含每个细节 . 也许是为了加快这个过程...为了在设备上运行之前确保整个包装,先做一个Clean:Shift-Cmd-K . 然后使用:Cmd-B构建 . 之后,在您的设备上运行它 . 简单 . 亲切的问候你在那个地方的所有好人!
令人惊讶的是,我所做的只是 "Clean" my project (移动cmd K)并且它起作用了 . 似乎与证书有关 .
我正在使用Xcode 7.2 . 如果您尝试了上述所有操作并且仍然出现错误,请尝试从Keychain Access中删除旧证书!终于解决这个问题真是太痛苦了 .
在我的情况下,我的一个测试目标是工作,但另一个不是 . 这是错误的库或其他什么给出上述错误 . 我比较了两个测试目标的设置,发现其中一个缺少“测试主机”的配置,所以我从工作测试目标中复制了它,并修复了我破坏的测试目标!
我正在使用Xcode 8.3.3和Xcode 9.2 . 我的解决方案是使用Xcode Select将默认Xcode从8切换到9:
$ xcode-select --print-path
$ sudo xcode-select -switch /Applications/Xcode-9.2.app
编辑:实际上似乎有用的是Xcode 9.2使用了来自Xcode 8.3.3的派生数据 . 不是解决方案,但至少它允许我继续我的工作 .
运行我的Swift测试时遇到了这个问题(但不是我的应用程序) . 事实证明,测试需要在测试目标的
Runpath Search Paths
构建设置中具有超过@executable_path/Frameworks
. 将Runpath搜索路径设置为以下为我带来了一个魅力:就我而言,它只是我的目标的名称:
我把它重命名为: MyApp.something 并出现了同样的问题 . 但是我在构建设置窗口中看到,我的产品模块名称已经更改为 MyApp-something . 所以,我删除了目标名称中的点( MyAppSomething ),问题就消失了 .
对我来说,尝试了一切都没有成功,有效的方法是从
Packaging section
删除@executable_path/Frameworks
(不知道它是如何在那里首先出现的)对我来说,以前的解决方案都没有奏效 . 我们发现Build Settings中有一个“Always Embed Swift Standard Libraries”标志,需要设置为YES . 默认是NO!
Build Settings > Always Embed Swift Standard Libraries
设置完成后,在再次构建之前清理项目 .
For keen readers some explanation最重要的部分是:
国旗原名为
Embedded Content Contains Swift Code
这些解决方案似乎都不起作用,但是当我将全球开发人员证书的许可更改为
Use System defaults
时,它就起作用了 . 我在下面的链接中包含了步骤和屏幕截图我鼓励你在这里提到的Apple bug报告中记录这张票,因为Apple确实应该解决这个大错误:https://stackoverflow.com/a/41401354/559760
从以下位置更改目标的 Copy Pods Resources :
至:
在Xcode 8中,
Embedded Content Contains Swift Code
选项的选项不再可用 .它已被重命名为
"Always Embed Swift Standard Libraries = YES"
这些解决方案都不适合我 . 重启手机修好了 . 奇怪,但它的工作原理 .
好的,在这里分享这个错误的另一个原因 . 我花了几个小时来解决这个问题 .
在我的情况下,我的证书在Keychain Access中的信任策略是 Always Trust ,将其更改回默认值解决了问题 .
要打开证书设置窗口,请双击证书的Keychain Access列表中的证书 .
为了在设备中,您还需要将动态框架添加到项目的
General
选项卡中的Embedded binaries
部分 .Xcode 7.2,iOS 9.2在一台设备上,9.0在另一台设备上 . 两者都有错误 . 不知道改变了什么导致了它,但上面的WWDR解决方案对我来说是正确的 . 安装该证书并解决问题 .
https://forums.developer.apple.com/message/43547 https://forums.developer.apple.com/message/84846
升级Xcode(以及随后的Swift的新版本)时,也会导致此错误消息,并且您的项目使用使用旧版/早期版本的Swift构建/编译的框架 .
在这种情况下,重建框架并重新添加它将解决问题 .
要添加到Enterprise分发证书解决方案:您可以打开Keychain并检查证书 . 如果有任何红色文字说信任链无法验证或被撤销,它将无法正常工作!在我的计算机上,即使门户网站显示它仍然有效,我们的分发证书也显示为已撤销 . 我们获得了一个新的分发证书,它在Keychain中是绿色(有效),这解决了这个问题 .
您必须将
Runpath Search Paths
设置为@executable_path/Frameworks
,如以下构建设置的屏幕截图所示:如果你有任何在Swift中构建的嵌入式框架,那么你可以设置为
YES
构建选项Embedded Content Contains Swift Code
.那里有很多答案,但可能是我的答案会帮助一些人 .
我有同样的问题,我的应用程序在模拟器上工作正常,但在设备上崩溃,因为我推出应用程序,并给出如上所述的错误 . 我已经尝试了所有答案和解决方案 . 在我的案例中,我的项目我有多个目标 . 我已经从目标A创建了重复的目标B.目标B工作正常而目标A崩溃了 . 我为每个目标使用不同的Image资源 . 搜索并做谷歌后,我找到了一些可能对某人有帮助的东西 .
当我更改两个应用的启动图像资源的名称时,应用程序停止崩溃 . 例如,目标A启动图像资产名称LaunchImage A.目标B午餐图像资产名称LaunchImage B并在每个目标的“常规”选项卡中正确分配 . 我的应用程序工作正常
我认为Apple已经在Swift app crashes when trying to reference Swift library libswiftCore.dylib下进行了总结
引自 Technical Q&A QA1886 :
作为AirSign的家伙state问题源于 In-House certificate 的 subject 字段中缺少的 OU 属性 .
主题:UID = 269J2W3P2L,CN = iPhone发行:公司名称, OU=269J2W3P2L ,O =公司名称,C = FR
我有一个企业开发证书,创建一个新的解决了这个问题 .
我通过删除派生数据解决了这次它正常工作 . 试过 Xcode 7.3.1GM
我认为直接从Xcode生成证书是一个错误 . 要解决(至少在Xcode 6.1 / 6A1052d中):
转到管理证书的Apple Developer网站:https://developer.apple.com/account/ios/certificate/certificateList.action
选择您的证书(应在"Status"下显示"Managed by Xcode")和"Revoke"
按照此处的说明手动生成新证书:https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html#//apple_ref/doc/uid/TP40012582-CH31-SW32
转到Xcode>首选项>帐户> [您的Apple ID]>双击您的团队名称>点击刷新按钮以更新证书和配置文件
移动到新的mac后我遇到了同样的问题,几小时后,在问题中尝试了所有建议的答案,这些都不适合我 .
我的解决方案是安装这个丢失的证书 . http://developer.apple.com/certificationauthority/AppleWWDRCA.cer
在这里找到答案 . https://stackoverflow.com/a/14495100/976628
上述解决方案无效我 . 我通过以下步骤解决了这个问题:
我不得不去手机(设置> Profiles )并删除手机中的 Profiles (包括与这些 Profiles /规定相关的所有应用) .
之后,请确保在xcode中下载苹果规定 . 转到xcode设置>帐户,然后登录您的Apple开发者帐户 .
让我们的项目P导入自定义库L,然后你必须添加L
P -> Build Phases -> Embed Frameworks -> + . 这对我行得通 .
当Xcode要求您重置证书时,你 reset 它 . 该应用程序可以在实际设备上运行,而不会因错误消息而崩溃 . 一旦这个问题在一个快速项目中得到解决 . 其他有这个问题的快速项目也是固定的 .
我已经为这些问题做了大约半天的努力,我发现在配置门户网站中一次又一次地重置证书并没有帮助 .