原因:找不到合适的图像[关闭]


129
dyld: Library not loaded: @rpath/libswiftCore.dylib
  Referenced from: /var/mobile/Containers/Bundle/Application/3FC2DC5C-A908-42C4-8508-1320E01E0D5B/Stylist.app/Stylist
  Reason: no suitable image found.  Did find:
    /private/var/mobile/Containers/Bundle/Application/3FC2DC5C-A908-42C4-8508-1320E01E0D5B/testapp.app/Frameworks/libswiftCore.dylib: mmap() errno=1 validating first page of '/private/var/mobile/Containers/Bundle/Application/3FC2DC5C-A908-42C4-8508-1320E01E0D5B/testapp.app/Frameworks/libswiftCore.dylib'
(lldb) 

在我的iPhone上构建时出现此错误。我能够在模拟器上构建。我已经重做了所有配置文件,但是仍然无法在iPhone上构建。我的Xcode是这样的

在此处输入图片说明

这是框架问题还是签名问题?这在Xcode 6中没有发生。谢谢。



我通过更改全球开发人员证书的权限解决了此问题(在SO上找到了死胡同之后)-在此处查看我的答案:stackoverflow.com/a/41401399/559760(希望这会
有所

iOS 13.3.1更新:如果您有这个不幸的iOS,并尝试使用嵌套框架安装应用程序,只需知道它是一个错误-更新到13.4.1或更高版本,便可以解决
iago849

Answers:


389

我之前曾因意外吊销证书而遇到此问题。然后我所有的快速项目都遇到了这个问题。有两种解决方法:

点击产品→清洁(或CMD+ Shift+ K

或通过手动清理Xcode设置文件:

rm -rf "$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang/ModuleCache"
rm -rf ~/Library/Developer/Xcode/DerivedData
rm -rf ~/Library/Caches/com.apple.dt.Xcode

1
在航站楼中使用它们
胡洁怡2015年

没问题。如果愿意,请选择我的答案:)
胡洁怡2015年

10
我认为Alt + Clean也会做到这一点
jjxtra

9
清理项目对我有用:SHIFT + CMD + K
B-Rad

9
您是否在使用非开发人员的Apple ID将应用程序安装到手机上?看来iOS 13.3.1已使用免费的Apple ID安装了损坏的应用程序,但前提是这些应用程序包含嵌入式框架。如果可以将所有依赖项链接为静态库而不是框架(例如,如果您使用的是Cocoapods,则可以从Podfile中删除use_frameworks!),那么现在应该可以解决此问题。
Kashif Rabbani

30

我在这个问题上搜索了很长时间。有多个原因导致此问题。

如果面对Objectice C项目中的Swift代码/库时,应该尝试解决方案1-2-3

如果您使用新的Swift项目解决方案4遇到此问题,则将是最合适的解决方案。

解决方案1

重新启动Xcode,然后重新启动计算机和iPhone

解决方案2

转到项目构建设置并将Embedded Content Contains Swift“代码”标志设置为“是”

解决方案3:

转到项目构建设置,然后添加@executable_path/Frameworks到“运行路径搜索路径”选项

解决方案4:

如果以上方法均无效,则应该这样做。正如AirSign帖子中提到的,Apple似乎是忍者补丁证书

在室内证书

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

所以您应该重新创建证书并进行配置


谢谢,我已经完成了解决方案1〜3,并且无法正常工作。我重新创建了证书和配置,但效果不佳
Satsuki 2015年

1
我正面临与Satsuki最初要求的相同的错误消息。解决方案4帮了我大忙。我在使用Realm Framework时遇到问题,但前提是我尝试创建应用程序的存档,然后通过iTunes安装它(否则可以流畅地直接部署到设备)。
彼得·伊凡尼克斯

4也为我做到了!这是AirSign帖子的链接:airsignapp.com/…– pshah
2015年

2
如何编辑内部认证?
Al Wang

1
1和2对我不起作用。在窗口->项目中,删除固定的派生数据。劣质的越野车xcode>。<
Cymric,

27
Xcode->Product->Clean + Xcode Restart

在尝试了许多其他提到的解决方案之后,令我永远尴尬的是,执行Xcode-> Product-> Clean并重新启动Xcode达到了目的。


2
我也做了许多前面提到的步骤,例如获取WWRD,检查运行路径等。非常感谢您!
Joe Famme '16

在几次清理失败后,我不得不重新启动Xcode。考虑到苹果似乎很难做出其他所有事情,这对于解决方案似乎太明显了
Jeffrey Kern,

19

对我来说,这个问题是由于WWRD证书而出现的-我的是最新的,但由于某种原因,它设置为“始终信任”而不是“使用系统默认值”,这显然有所不同。


4
+1为证书问题。我尝试了一切,但后来发现我的开发人员证书在钥匙串中设置为“始终信任”。如您所说,更改为“使用系统默认值”非常有效。谢谢!
tylermilner

1
尝试了一切,做到了。认真地,为什么苹果不能将其作为Xcode的一部分来解决呢?...
UKDataGeek

1
极其重要:将证书访问权限更改为“使用系统默认值”后,深层清洁项目(cmd + Alt + shift + K)
Roman Slyepko

2
救了我的兄弟!谢谢
andrea.rinaldi 17-11-10

我认为这是此问题的最终解决方案。我还尝试了Internet上几乎所有可用的解决方案,但除此以外,它们都不对我有用。很好的解决方案...
恩。维哈尔'18

17

如果您不小心重置了钥匙串,则可能是由于钥匙串中缺少Apple证书而导致的。我跟着就回答这个解决我的问题。

我遇到了同样的问题,并且能够通过重新下载WWDR(苹果全球开发者关系认证中心)来解决。从此处下载:http : //developer.apple.com/certificationauthority/AppleWWDRCA.cer


1
在将Xcode和我的用户配置文件从一台Mac转移到另一台Mac后,为我修复了该问题。
RTasche '16

1
适用于我的情况,谢谢!
爱丽丝·陈

1
谢谢您,您是一位拯救生物
Josh O'Connor

谢谢,花了我这么长时间才找到这个。
Loudmouth

14

删除DerivedData对我有用。

是否通过Xcode->首选项->位置->单击DerivedData路径后面的箭头,并删除了Finder中的整个DerivedData文件夹。


谢谢,为我工作,科尔多瓦+ xcode 7.2
jujule

1
Window > Projects > My Project > Derived Data > Delete为我做了工作。
迈克尔瀑布

在Xcode 10.1上为我工作。一切正常,但是在一个快乐的日子里,Xcode开始显示这些错误。谢谢。
Zhebzhik Babich

5

通过xcodebuild和xcrun PackageApplication在命令行中构建应用程序时,这是在我这一边发生的,并使用企业配置文件对应用程序进行了签名。在我们的CI构建服务器上,证书在钥匙串中设置为“始终信任”(选择证书->获取信息->信任->“使用系统默认值”可以更改为“始终信任”)。为了使此工作有效,我必须将其设置回“使用系统默认值”。最初,我们将此设置为“始终信任”以解决在软件更新和证书更新之后出现的钥匙串对话框。


3

冒着更多混乱的风险,在更新到XC8时遇到了这个问题。

这些建议都没有解决,也没有其他解决方案。DID的工作是从“链接二进制文件和库”构建阶段,“目标依赖项”构建阶段以及“链接框架和库”常规设置中删除所有内容。

仅供参考,我使用的是Carthage,并且已将其添加$(PROJECT_DIR)/Carthage/Build/tvOSFRAMEWORK_SEARCH_PATHS构建设置中,以便可以找到我的框架。

FYI 2,这个项目和框架正在100%迅速地完成并且框架正在建立DEFINES_MODULE = YES


DEFINES_MODULE = YES为我工作。我的项目同时包含Objective-C和Swift。
贾森·休


2

技术问答QA1886引用

尝试引用Swift库libswiftCore.dylib时,Swift应用程序崩溃。

问:当我尝试运行Swift语言应用程序时,如何解决设备控制台中的libswiftCore.dylib加载错误?

答:要解决此问题,您将需要使用主题组织单位(OU)设置为团队ID的代码签名证书对应用程序进行签名。在iOS 8发行后创建的所有Enterprise和标准iOS开发人员证书的正确位置都有新的Team ID字段,以允许运行Swift语言应用程序。

通常,此错误会在设备的控制台日志中显示,并显示与以下内容之一相似的消息:[....] [deny-mmap]映射文件没有组标识符,也不是平台二进制文件:/ private / var / mobile /容器/包/应用程序/5D8FB2F7-1083-4564-94B2-0CB7DC75C9D1/YourAppNameHere.app/Frameworks/libswiftCore.dylib

Dyld Error Message:
  Library not loaded: @rpath/libswiftCore.dylib

Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x0000000120021088
Triggered by Thread: 0

Referenced from: /private/var/mobile/Containers/Bundle/Application/C3DCD586-2A40-4C7C-AA2B-64EDAE8339E2/TestApp.app/TestApp
Reason: no suitable image found. Did find:
/private/var/mobile/Containers/Bundle/Application/C3DCD586-2A40-4C7C-AA2B-64EDAE8339E2/TestApp.app/Frameworks/libswiftCore.dylib: mmap() error 1 at address=0x1001D8000, size=0x00194000 segment=__TEXT in Segment::map() mapping /private/var/mobile/Containers/Bundle/Application/C3DCD586-2A40-4C7C-AA2B-64EDAE8339E2/TestApp.app/Frameworks/libswiftCore.dylib
Dyld Version: 353.5

构建档案和打包应用程序时需要新证书。即使您拥有新证书之一,仅辞职现有的快速应用程序存档也将不起作用。如果它是使用iOS 8之前的证书构建的,则需要构建另一个存档。

重要提示:如果您需要吊销和设置新的Enterprise Distribution证书,请谨慎使用。如果您是内部企业开发人员,则需要注意不要撤销用于签署应用程序的发行证书,任何您的Enterprise员工仍在使用通过该企业发行证书签名的任何应用程序将立即停止工作。以上仅适用于企业分发证书。对于企业/标准iOS开发人员而言,可以撤销开发证书。

正如AirSign专家指出的那样,问题源于内部证书的主题字段中缺少OU属性。

主旨:UID = 269J2W3P2L,CN = iPhone发行:公司名称,OU = 269J2W3P2L,O =公司名称,C = FR

我拥有企业开发证书,创建了一个新的证书可以解决该问题。


有人可以用英语解释吗?
UKDataGeek

1

您可能在该库中没有正确的拱门,可以执行

file /private/var/mobile/Containers/Bundle/Application/3FC2DC5C-A908-42C4-8508-1320E01E0D5B/testapp.app/Frameworks/libswiftCore.dylib

它应该向您显示该库中的拱门...我不确定您如何链接,但这可能不是正确的方法(如果libswiftcore是工厂库,如果它是库的附加库,那么它可能未正确编译)


您好,谢谢您的回答,我有一个问题。在您说的答案中,它应该向您显示该库中的拱门。你怎么显示它。
小月

该命令称为文件...但是我想您需要在Mac上找到本地版本,而不是电话上的路径...
Grady Player

1

我也有这个问题,但是我在上面和其他几篇文章中都没有尝试过。

对我来说,我更改了包标识符,因为我们有不同的包ID,用于分发和开发。

此规定允许使用我的硬件,并且我的团队帐户有效,但是在其他框架上引发了上述错误。

原来,我需要从手机中完全删除旧版本的应用程序。而不仅仅是删除标准方式。

解决方案:

  1. 确保目标电话已连接
  2. 从xcode菜单中单击[Window> Devices]
  3. 在左侧菜单上选择目标设备。
  4. 右侧将显示您设备中的应用程序列表。找到您要测试的应用程序并将其删除。

显然,要在同一团队下以不同的捆绑软件ID安装相同的应用程序,如果您不是从头开始的话,可能会有些混乱的框架参考。

希望这对某人有帮助。


我的捆绑包ID尚未更改。而且上述任何建议都无法解决问题(->清理;手动删除;重新启动所有内容;每次都从iPhone手动删除应用程序;等等)。只需按照克里斯托弗的建议修正即可立即思考,而无需再次清理任何东西。[iphone 5; iOS 9.3.5;Xcode 7.3]
marco


1

以下步骤已成功解决。

1)在动态库中,安装名称必须为“ @loader_path”

2)在主项目中,运行路径搜索路径必须为“ @loader_path”和“ @ loader_path / Frameworks”

3)从使用过的钥匙串视图->显示过期的证书并删除所有内容。

4)删除分发证书并重新安装。

5)下载developer.apple.com/certificationauthority/AppleWWDRCA.cer并安装。


1

我最近遇到了这个问题。我尝试了所有可能的解决方案,但没有任何效果。最后,我只是退出了Xcode,删除了钥匙串中的证书,并安装了所有最新内容并重新启动了mac。幸运的是,它像魅力一样工作:)


1

我遇到了同样的问题,并且能够通过重新下载来解决WWDR (Apple Worldwide Developer Relations Certification Authority)。从这里下载:

并在钥匙串中设置为始终信任。更改为Use System Default

它对我有用,希望对您有帮助


1

以我为例,钥匙串将证书显示为不可信,为解决此问题,我将证书的信任选项设置为“始终信任”。将证书设置为“始终信任”是崩溃的主要原因。我无法将应用程序安装到设备中。通过将信任选项设置为“系统默认值”而不是“始终信任”来解决此问题。它对我有用。


1

如果您在Xamarin Studio中工作,并且引用的便携式库需要执行PCL诱饵和切换技巧,则您会看到相同的症状。如果引用项目相对于所引用的库已过时,则会发生这种情况。我发现我已将我的公共库更新到一个较新的框架,更新了我的软件包,但没有更新我的iOS软件包以匹配。更新软件包可以为我解决此错误。


1

尝试@Jieyi Hu Answer后,您仍然可能会遇到此问题。可能似乎已经修复,但是如果再次出现(可能在xCode 9上)。

但是,此替代方法似乎可行(适用于Cocoapods 1.5.x):

  1. 清理你的项目
  2. 关闭Xcode并删除DerivedData
  3. 在您的项目中打开Podfile,并添加以下内容:

    post_install do |installer| installer.pods_project.build_configurations.each do |config| config.build_settings.delete('CODE_SIGNING_ALLOWED') config.build_settings.delete('CODE_SIGNING_REQUIRED') end end

  4. 吊舱更新

资料来源:

https://github.com/evgenyneu/Cosmos/issues/105

https://github.com/Skyscanner/SkyFloatingLabelTextField/issues/201#issuecomment-381915911

谢谢@Cédric



0

我通过检查本地钥匙串来解决问题。保持login.keychain具有正确的证书


欢迎使用Stack Overflow!这不能为问题提供答案。要批评或要求作者澄清,请在其帖子下方留下评论-您可以随时评论自己的帖子,一旦获得足够的声誉,您就可以在任何帖子中发表评论。如果您有一个相关但不同的问题,请提出一个新问题,参考该问题是否有助于提供背景信息。
ddb

0

您需要为项目中要链接(直接或间接)的每个动态框架设置证书(仅证书而不是配置文件)在此处输入图片说明


0

就我而言,删除所有Xcode创建并下载的证书后。让xcode 8.1管理应用程序的认证,效果很好!!!希望这可以帮助某人。


0

我仅在模拟器上遇到过此问题。它似乎与我们的应用程序中的某些无效权利有关,但是当我们在设备上运行时,该问题没有出现。


0

我用这些技巧解决了。

第1步:

转到项目构建设置,然后将@ executable_path / Frameworks添加到“运行路径搜索路径”选项

第2步:

转到目标构建设置,然后将@ executable_path / Frameworks添加到Runpath Search Paths选项和Framework Search Paths。

在此处输入图片说明

第三步:

重新下载WWDR(Apple全球开发者关系认证中心),并将其设置为“使用系统默认值”。

第4步:

使用终端删除所有派生数据

rm -rf〜/库/开发人员/ Xcode / DerivedData / *

步骤5

删除所有证书,然后将其重新安装到钥匙串中。我启用了“使用系统默认值”选项。

步骤6:

重新启动Xcode。


0

面临同样的问题

  1. 我的开发人员证书已过期,因此创建了新的开发人员证书并下载
  2. 清理并重新启动xcode,这对我有用

0

我在XCode 9中遇到了这个问题。这帮了我大忙:

Project > Build Settings > Swift Compiler - Search Path: Setting "Import Paths"$(PROJECT_DIR)(递归)


0

这解决了我的错误-

重新下载WWDR(Apple全球开发者关系认证中心),并将其设置为“使用系统默认值”。


0

就我而言,这是我使用的一个吊舱的问题。我最终删除了该Pod,并将其中的代码手动放入了我的项目中。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.