swift - 如何在 Xcode 中的 UITest 目标中链接自定义框架 - 另一个 "Library not loaded - @rpath"-issue

标签 swift xcode frameworks uitest rpath

我的项目使用 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 构建阶段中,我实际上可以添加一个新运行脚本阶段,并且我认为我需要以某种方式链接我的框架在这​​里。 它是否正确?有人可以帮我定义运行脚本吗?

是的,我尝试清理我的应用程序(并且我还删除了派生数据)。

非常感谢您的帮助。谢谢!

最佳答案

好吧,我终于明白了。解决方案相当简单,我还没有看到有人提出这个建议。我们开始吧:

要在应用目标中使用自定义框架,只需将其添加到框架、库和嵌入式内容下即可:

enter image description here

现在您可以从主目标访问 MyFramework。 我还可以从模拟器运行我的 ui 测试,但在从真实设备执行我的 ui 测试时仍然遇到上述错误。

摆脱 bundle “xxxUITests”无法加载,因为它已损坏或缺少必要的资源。尝试重新安装 bundle 。-错误,我必须转到我的 uiTest-target 并在我的构建阶段中链接框架。

enter image description here

enter image description here

enter image description here

作为目标,选择框架,然后选择要在 uiTest 目标中使用的框架。

现在您应该能够从您的设备运行 ui-Test。

关于swift - 如何在 Xcode 中的 UITest 目标中链接自定义框架 - 另一个 "Library not loaded - @rpath"-issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60079197/

相关文章:

java - Android 2D游戏简单引擎或框架

ios - 为什么这段代码每秒运行 1000 次时运行速度这么慢?

IOS Swift UITableView - 无法解释的边距 - 如何摆脱?

ios - 如何手动将 Alamofire 添加到 xcode 项目中

ios - 如何在 Storyboard 中加载没有按钮的 View Controller ?

typescript - 如何在 Typescript 中编写单元测试?

ios - 更新我的 map 后,Viewforannotation 将注释获取为 nil

objective-c - 获取 Obj-C Cocoapod API 以在 Swift 3.0 应用程序中使用

iphone - 如何在 Xcode 4 中从断点操作打印字符串值?

ios - 创建 iOS 框架 : how to prevent insight into source code while debugging