dyld:未加载库:@ rpath / libswiftAVFoundation.dylib原因:未找到图像

问题描述 投票:10回答:3

启动我的应用程序时出现此错误。我正在MacOS High Sierra 10.13上的Xcode 9.0(9A235)下构建。我也尝试使用相同的结果在Xcode 8.3.3下构建。该项目通常是Objective C,但框架YouAppi.framework是Swift:

dyld: Library not loaded: @rpath/libswiftAVFoundation.dylib
  Referenced from: /private/var/containers/Bundle/Application/7D3E2815-4CA3-4258-AEF6-C0626055A8F2/dingbats.app/Frameworks/YouAppi.framework/YouAppi
  Reason: image not found

乍一看,这似乎是this question的重复,但错误是不同的。在另一个问题中,原因是找不到合适的图像,其中我的图像未找到。

我尝试过以下方法来解决:

  1. 删除并重新添加框架
  2. 清洁和选项+清理项目
  3. 删除〜/ Library / Developer / Xcode / DerivedData文件夹
  4. 构建设置 - >始终嵌入Swift标准库=是
  5. 构建设置 - >剥离Swift符号=否
  6. 构建设置 - >链接 - >运行路径搜索路径 - 添加了@loader_path 添加了@rpath 添加了@ executable_path / Frameworks
  7. 检查了Trust设置为Use System Defaults的开发人员和分发证书
  8. 检查我是否安装了最新的WWDR和G2证书
  9. 检查上述证书的有效性
  10. 将YouAppi.framework移动到Frameworks /文件夹中。 (它最初位于“第三方框架”文件夹中。)
  11. 试图将libswiftAVFoundation.dylib复制到我项目的Frameworks文件夹中

我最近没有搬到新电脑。

我在运行iOS 11.0.23(15A432)的iPhone 7+以及运行iOS 9.3.5(13G36)的iPad Mini 1上也有相同的结果。

还试过这个:

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

想法?

ios swift xcode9 dyld
3个回答
17
投票

当在非Swift项目中包含使用Swift构建的框架时,需要将Swift标准库复制到最终输出中。 Xcode有一个复选框(原始问题中的#4),但显然有一个错误,在某些情况下,它实际上并没有发生。

我在某个地方看到了另一个线程,当你有一个用Swift构建的框架时会发生这种情况,Swift是为多种架构而构建的,例如armv7和arm64。 (见线程here。)

无论如何,解决方案是手动添加它们。您要查找的文件位于/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos中。

我做的是这样的:

步骤1.打开终端并键入此内容,将库复制到主目录中的新文件夹swiftStdLib。

cd /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos
mkdir ~/swiftStdLib
cp libswift*.dylib ~/swiftStdLib

步骤2.在Xcode中,转到General - > Embedded Binaries,然后点击+添加。单击Add Other,然后导航到您的主文件夹/ swiftStdLib。选择全部并按Enter键。

第3步。清理并构建项目。

希望这有助于某人。


4
投票

在添加框架之前试试这个:

我删除了xcode9中的派生数据 - 它对我有用

请参阅以下链接:如何从派生数据中删除内容

How can I delete derived data in Xcode 9?


0
投票

从Keychain Access删除旧的开发人员证书对我有帮助。


-1
投票

简单的步骤

项目 - >构建阶段 - >嵌入框架 - > +。

它适用于所有人。适合每个人的完美解决方案。

  • 在Link Binary中添加库和库
  • 添加新的复制文件短语,在目标部分选择框架并在那里导入库。
  • 并运行你的代码..魔术..享受

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.