当在设备上运行时,Swift应用程序崩溃 - dyld:库未加载:@rpath/libswiftCore.dylib

6

我是ios/xcode新手,正在尝试在运行iOS v8.0.2的iphone 5上测试一个简单的Swift应用程序。在xcode(版本6.1(6A1052d))中成功构建应用程序,但在尝试在iPhone上运行时,出现以下错误导致崩溃:

dyld: Library not loaded: @rpath/libswiftCore.dylib
  Referenced from: /private/var/mobile/Containers/Bundle/Application/FBBDB6F3-6B2C-428F-AA9C-E88FE439D5B6/prox.app/prox
  Reason: no suitable image found.  Did find:
    /private/var/mobile/Containers/Bundle/Application/FBBDB6F3-6B2C-428F-AA9C-E88FE439D5B6/prox.app/Frameworks/libswiftCore.dylib: mmap() error 1 at address=0x001FA000, size=0x001A0000 segment=__TEXT in Segment::map() mapping /private/var/mobile/Containers/Bundle/Application/FBBDB6F3-6B2C-428F-AA9C-E88FE439D5B6/prox.app/Frameworks/libswiftCore.dylib
    /private/var/mobile/Containers/Bundle/Application/FBBDB6F3-6B2C-428F-AA9C-E88FE439D5B6/prox.app/Frameworks/libswiftCore.dylib: mmap() error 1 at address=0x004DA000, size=0x001A0000 segment=__TEXT in Segment::map() mapping /private/var/mobile/Containers/Bundle/Application/FBBDB6F3-6B2C-428F-AA9C-E88FE439D5B6/prox.app/Frameworks/libswiftCore.dylib
(lldb) 

我尝试了其他人提供的大部分建议,但是都没有成功解决这个错误。当使用另一位团队成员的构建环境来构建相同的应用程序时,它可以正常工作。我已经比较了构建设置,并发现它们是相同的。


请向苹果公司报告错误,或者提交支持事件。最近很多人都遇到了同样的问题。Swift 出现了一些问题。 - matt
你的“其他团队成员”能够运行什么类型的设备? - matt
我说过"确切地讲"。没有所谓的"一个iPhone"。什么型号的iPhone? 这可能很重要。我们知道你有一台iPhone 5。现在我们想知道他有什么。请调查一下。 - matt
1
这与“构建环境”无关。我几个月来一直在构建Swift应用程序并在设备上运行它们,一切都很好 - 然后就不行了。我什么也没改变。是Swift发生了变化。现在我们需要找出原因。 - matt
可能是重复的问题:dyld: Library not loaded: @rpath/libswiftCore.dylib - Shai
显示剩余18条评论
3个回答

5

如果这是证书问题,那么(1)为什么苹果不告诉人们这就是解决方案?(2)我们如何解释这样一个事实,即如果应用程序只是 Objective-C,我们都可以在设备上顺利运行?这不是证书问题,而是 _Swift框架_的问题。 - matt
你在一个语义问题上小题大做。苹果公司在没有通知任何人的情况下更改了他们的证书。苹果公司设计了他们的证书和Swift框架,使它们耦合在一起。iOS设备上的Swift启动过程会查找嵌入在证书中的信息。如果没有这些信息,它就会崩溃。对我来说,这是两者的问题。 - David Berger
这是一个很好的论点...我已经重新开始运行了,并且在此过程中,从完全新的证书和配置文件开始是我所做的事情之一,因此即使我不能确定后果是否因此而起,我也会点赞你的答案。 :) - matt
@DavidBerger - 给你点赞!在我的情况下,重新创建我的开发者证书解决了问题。当我在下载新证书后在Xcode中运行我的应用程序时,它提示我我的预配文件不包括我的新证书,并提供“修复问题”的选项。我点击了那个选项,它生成了一个新的预配文件,然后我就可以继续了。Mike - Mike Taverne
我已经尝试了多次这个步骤,但它并没有解决我的问题。 - Eastern Monk

1

你可能需要使用新的证书来签署应用程序。摘自苹果技术常见问题解答。

为了解决这个问题,您需要使用主题组织单位(OU)设置为您的团队ID的代码签名证书来签署您的应用程序。在iOS 8发布后创建的所有企业和标准iOS开发人员证书都在正确的位置上具有新的团队ID字段,以允许Swift语言应用程序运行。


0

我在更新XCode后,遇到了同样的问题,因为我使用的是“旧”的Swift项目...

我通过创建一个新项目,并将旧类复制/粘贴到其中来解决了这个问题...如果你将每个类/故事板都复制/粘贴到新项目中,它就可以运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接