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

dyld: Library not loaded: @rpath/libswiftAVFoundation.dylib Reason: image not found

我在启动我的应用程序时遇到此错误。我在 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

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

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

  1. 删除并重新添加框架
  2. 清理并选择+清理项目
  3. 删除 ~/Library/Developer/Xcode/DerivedData 文件夹
  4. 构建设置 -> 始终嵌入 Swift 标准库 = 是
  5. Build Settings -> Strip Swift Symbols = No
  6. 构建设置 -> 链接 -> 运行路径搜索路径 --
    • 已添加@loader_path
    • 添加了@rpath
    • 已添加@executable_path/Frameworks
  7. 已检查将信任设置为使用系统默认值的开发人员和分发证书
  8. 检查我是否安装了最新的 WWDR 和 G2 证书
  9. 检查上述证书的有效性
  10. 已将 YouAppi.framework 移动到 Frameworks/ 文件夹中。 (它最初位于 "Third-Party Frameworks" 文件夹中。)
  11. 尝试将 libswiftAVFoundation.dylib 复制到我项目的 Frameworks 文件夹中

我最近没有换过新电脑。

我的 iPhone 7+ 运行 iOS 11.0.23 (15A432) 以及 iPad Mini 1 运行 iOS 9.3.5 (13G36).

也试过这个:

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

想法?

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

我在某处看到另一个线程,它说当您使用 Swift 构建的框架时会发生这种情况,该框架是为多种架构构建的,例如 armv7 和 arm64。 (参见线程 here。)

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

我做的是这样的:

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

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

第 2 步。在 Xcode 中,转到 常规 -> 嵌入式二进制文件 ,然后点击 + 进行补充。单击 添加其他 ,然后导航到您的主文件夹/swiftStdLib。 Select 全部并按回车键。

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

希望这对某人有所帮助。

XCODE11 的更新:

在 Xcode 11.3 中,Swift 库文件夹已更改为包含主要 Swift 版本号。最初的问题是基于Xcode 9,所以这可能比Xcode 11.3更早,但我没有检查过。

新文件夹是/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.0/iphoneos.

所以上面的第 1 步改为:

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

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

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

我删除了 xcode9 中的派生数据 - 它适用于我

参考下面link:如何从派生数据中删除内容

Simple step to follow

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

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

  • 在 Link 二进制文件中添加库 &
  • 在目标部分添加新的复制文件短语,Select 框架并在那里导入库。
  • 还有运行你的代码..魔法..享受

注意:-请确保未选中“复制文件”中的“仅在安装时复制”

有时只是清理项目似乎对我有用。我注意到当我有一个 swfit/objc/c++ 项目组合时,这种情况会更频繁地发生。