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

时间:2017-10-14 18:09:59

标签: ios swift xcode9 dyld

启动我的应用后出现此错误。我正在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. 构建设置 - >链接 - > Runpath搜索路径 -
    • 添加了@loader_path
    • 添加了@rpath
    • 添加了@ executable_path / Frameworks
  7. 已检查Trust已设置为“使用系统默认值”的开发人员和分发证书
  8. 检查我是否安装了最新的WWDR和G2证书
  9. 检查上述证书的有效性
  10. 将YouAppi.framework移动到Frameworks /文件夹中。 (它最初位于“第三方框架”文件夹中。)
  11. 尝试将libswiftAVFoundation.dylib复制到我项目的Frameworks文件夹
  12. 我最近没有搬到新电脑。

    我在运行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
    

    想法?

5 个答案:

答案 0 :(得分: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中,转到常规 - > 嵌入式二进制文件,然后点击 + 进行添加。点击添加其他,然后导航到您的主文件夹/ swiftStdLib 。选择全部并按Enter键。

步骤3.清理并构建项目。

希望这有助于某人。

答案 1 :(得分:4)

在添加框架之前,请尝试以下操作:

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

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

How can I delete derived data in Xcode 9?

答案 2 :(得分:0)

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

答案 3 :(得分:0)

  

要遵循的简单步骤

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

它将对所有人都适用。为每个人提供完美的解决方案。

  • 在带有库的链接二进制文件中添加库&
  • 添加新的“复制文件”短语,在“目标”部分中选择框架并将其导入库。
  • 然后运行您的代码..魔术..享受

enter image description here

答案 4 :(得分:0)

有时候清理项目似乎对我来说很有效。当我使用swfit / objc / c ++项目组合时,我注意到这种情况发生的频率更高。