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

标签 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. Clean and Option+Clean 项目
  3. 删除 ~/Library/Developer/Xcode/DerivedData 文件夹
  4. build设置 -> 始终嵌入 Swift 标准库 = 是
  5. Build Settings -> Strip Swift Symbols = No
  6. build设置 -> 链接 -> 运行路径搜索路径 --
    • 添加@loader_path
    • 添加@rpath
    • 添加了@executable_path/Frameworks
  7. 检查了 Trust 设置为使用系统默认值的开发人员和分发证书
  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

想法?

最佳答案

在非 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 中,转到 General -> Embedded Binaries,然后点击 + 进行添加。点击添加其他,然后导航到您的主文件夹/swiftStdLib。全选并回车。

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

希望这对某人有帮助。

XCODE 11 更新:

在 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

关于ios - dyld:未加载库:@rpath/libswiftAVFoundation.dylib 原因:找不到图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46747801/

相关文章:

swift - 具有关联值的枚举作为另一个枚举的关联值(嵌套关联值)

ios - 使用 XCode 9/iOS 11 时出现 Phonegap 错误

ios - 在函数内将数据传递到 segue.destination 时出现问题

ios - swift ||从 API 调用返回可由其他方法使用的类

jquery - 使用 jQuery 和动画的全屏背景图像

php - iOS 到 php 服务器文件上传 - 我应该允许什么文件大小的图像?

swift - 为什么 null 检查不好/如果它为 null,为什么我希望一个可选的成功?

ios - 在针对 iOS 11 的 Xcode 9 上构建应用程序,但在 iPhone X 上具有兼容模式

ios - 在 iPhone X 模拟器的顶部和底部看到黑条

ios - 如何找出 NSManagedObjectContextObjectsDidChange 关注的 MOC