我的项目使用 Xcode 11.3.1,结构如下:
MyProject
- MyProject.xcworkscapce
- MyFramework
- MyApp
-MyApp (main-target)
-MyAppUITests (uiTest-target)
MyApp 导入 MyFramework
并且可以正常构建和运行。为此,我将 MyFramework
添加到主目标到主目标常规/框架和库。
在我的 UITest 目标中,我需要从 MyFramework
访问一些类(Accessibility-Identifier-Definitions),因此我需要以某种方式导入这些类。
两个目标都正在构建,并且主目标工作没有任何问题。我还可以在模拟器上运行 ui 测试。不幸的是,我被迫在真实设备上运行测试,在这里我收到此运行时错误:
The bundle “MyAppUITests” couldn’t be loaded because it is damaged or missing necessary resources. Try reinstalling the bundle.
(dlopen_preflight(/var/containers/Bundle/Application/E581B3BA-A9A2-4AA3-A1BA-91C57DCD3846/MyAppUITests-Runner.app/PlugIns/MyAppUITests.xctest/FHCommunityUITests): Library not loaded: @rpath/MyFramework.framework/MyFramework
Referenced from: /var/containers/Bundle/Application/E581B3BA-A9A2-4AA3-A1BA-91C57DCD3846/MyAppUITests-Runner.app/PlugIns/MyAppUITests.xctest/MyAppUITests
Reason: image not found)
我对这个框架(以及用户界面测试)相当陌生,我现在处理这个问题已经两天了。大多数关于类似问题的帖子都与错误指定的 Podfile 相关,但在我的准系统示例项目中,我设置了不破坏我的真实项目,但我没有使用任何 Pod。我可能尝试了所有建议的解决方案(以及几乎所有组合:(),但它们似乎都不起作用。
我花了一段时间才弄清楚,在我的 uiTest-target 构建阶段中,我实际上可以添加一个新运行脚本阶段,并且我认为我需要以某种方式链接我的框架在这里。 它是否正确?有人可以帮我定义运行脚本吗?
是的,我尝试清理我的应用程序(并且我还删除了派生数据)。
非常感谢您的帮助。谢谢!
最佳答案
好吧,我终于明白了。解决方案相当简单,我还没有看到有人提出这个建议。我们开始吧:
要在应用目标中使用自定义框架,只需将其添加到框架、库和嵌入式内容
下即可:
现在您可以从主目标访问 MyFramework。 我还可以从模拟器运行我的 ui 测试,但在从真实设备执行我的 ui 测试时仍然遇到上述错误。
摆脱 bundle “xxxUITests”无法加载,因为它已损坏或缺少必要的资源。尝试重新安装 bundle 。
-错误,我必须转到我的 uiTest-target 并在我的构建阶段中链接框架。
作为目标,选择框架,然后选择要在 uiTest 目标中使用的框架。
现在您应该能够从您的设备运行 ui-Test。
关于swift - 如何在 Xcode 中的 UITest 目标中链接自定义框架 - 另一个 "Library not loaded - @rpath"-issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60079197/