首页 > 解决方案 > 如果不是从 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(在同一部手机上)启动时变得不可用?

标签: iosxcode

解决方案


这在运行时而不是编译时失败的原因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 问题。

这对于测试目标来说不是问题,因为它们已经被添加到模拟器和设备运行时。


推荐阅读