ios - 如果不是从 xcode 运行,iOS 应用程序缺少 DYLD
问题描述
如果我从 Xcode 12.3 运行我的应用程序,我可以在我的 Iphone 11 上启动它。但是在手机上运行该应用程序会失败。设备日志在我正在使用的包 (Mocker) 中给出以下错误:
Termination Description: DYLD, dyld: Using shared cache:
EEFDD874-2301-31BF-B255-11CE61E827BD | dependent dylib
'@rpath/XCTAutomationSupport.framework/XCTAutomationSupport'
not found for
'/private/var/containers/Bundle/Application/
E5F4D064-2097-4978-AFB5-954DC355F686/Things.app/Frameworks/
Mocker.framework/Frameworks/XCTest.framework/XCTest', tried but didn't find:
'/usr/lib/swift/XCTAutomationSupport.framework/XCTAutomationSupport'
'/private/var/containers/Bundle/Application/
E5F4D064-2097-4978-AFB5-954DC355F686/Things.app/Frameworks/
XCTAutomationSupport.framework/
XCTAutomationSupport'
'/private/var/containers/Bundle/Application/E5F4D064-2097-4978-AFB5-
954DC355F686/Things.app/Frameworks/Mocker.framework/Frameworks/
XCTAutomationSupport.
framework/XCTAutomationSupport' '@rpath/XCTAutomationSupport.framework/
XCTAutomationSupport'
'/System/Library/Frameworks/XCTAutomationSupport.framework/
XCTAutomationSupport'
显然,这是一个根据规范可以找到或找不到某些包的问题。我将如何前进?如果可能的话,我会很感激了解这种情况是如何发生的——是什么导致库在从手机运行而不是从 Xcode(在同一部手机上)启动时变得不可用?
解决方案
这在运行时而不是编译时失败的原因Mocker
是试图找到XCTest
动态库- 这些仅在运行时加载。
Application Bundle 中缺少该框架 - 可以从错误日志中看到:
not found for
'/private/var/containers/Bundle/Application/
E5F4D064-2097-4978-AFB5-954DC355F686/Things.app/Frameworks/
Mocker.framework/Frameworks/XCTest.framework/XCTest
将 dylib 添加到应用程序目标的链接框架和库中,按照此处的步骤操作,还有许多其他与嵌入XCTest.framework
应用程序目标相关的 SO 问题。
这对于测试目标来说不是问题,因为它们已经被添加到模拟器和设备运行时。
推荐阅读
- batch-file - windows下python虚拟环境发送命令
- c# - 如何在 C# 中播放 .wav 文件
- reactjs - 你不应该在外面使用
- 从不同的文件夹导入 - python - 使用字典元组键的最后两个元素求和
- python - Jupyter 在 VSCode 中运行错误的单元格
- ios - 我们如何在 Swift 中使用 firebase 发送位置信息
- python - 重定向快捷方式不起作用,不在浏览器上重定向我
- java - 后端从数据库中获取所有数据但返回一个结果
- numpy - “建立强混合整数规划公式的几何方法”中的定理 1
- python - flask-admin 自定义表单操作并启动后台进程