【问题标题】:Xcode UI Testing: lldb error "only available on iOS 9.0 or newer"Xcode UI 测试:lldb 错误“仅适用于 iOS 9.0 或更高版本”
【发布时间】:2016-05-19 10:32:10
【问题描述】:

背景

我为我们的 iOS 应用程序使用 Xcode 7.3 和 Swift 构建了一个相当详细(大约 2000 行 swift 代码)的自动化框架。

直到最近,我都能够使用lldb 来构建我的框架,即

  • 插入断点并运行代码直到该点
  • 使用po XCUIApplication().debugDescriptionexpr bla bla 构建逻辑
  • 重复

问题

突然之间,我现在在lldb 的控制台中运行任何东西时都会遇到以下错误:

(lldb) po XCUIApplication()
error: <EXPR>:2:1: error: 'XCUIApplication' is only available on iOS 9.0 or newer
XCUIApplication()
^
<EXPR>:2:1: note: add 'if #available' version check
XCUIApplication()
^
<EXPR>:2:1: note: add @available attribute to enclosing instance method
XCUIApplication()
^
<EXPR>:2:1: note: add @available attribute to enclosing extension
XCUIApplication()
^
<EXPR>:10:9: warning: initialization of variable '$__lldb_error_result' was never used; consider replacing with assignment to '_' or removing it
    var $__lldb_error_result = __lldb_tmp_error
    ~~~~^~~~~~~~~~~~~~~~~~~~

注意事项

谷歌搜索和研究对我没有任何意义。 我发现的一个相关线程在fastlane project 中。与该评论不同,我的是 UI 测试目标。 此外,测试目标的“iOS 部署目标”设置为 iOS 9.2(以防万一)。

  • 就我所记得的而言,我最近没有做出任何重大改变。
  • 我的设备是(并且一直是)iOS 9+。

可能出了什么问题?

2016 年 5 月 20 日更新

根据下面的答案进行一些探索:https://stackoverflow.com/a/37335950/682912

  • 此问题仅在真实设备上发生。模拟器不会遇到这个问题。
  • 在真实设备(iPhone 6S+、iOS 9.2.1)上,我完全重置了内容和设置。这并没有解决问题。

【问题讨论】:

  • 您是在运行 iOS 9 以下的设备或模拟器上运行吗?
  • 在调试器中,尝试这里的一些方法调用来验证操作系统版本:http://stackoverflow.com/questions/3339722/how-to-check-ios-version
  • @Oletha 如前所述,它是 iOS 9+ (9.2.1)。 @bneely po NSProcessInfo().operatingSystemVersion 返回 ▿ NSOperatingSystemVersion - majorVersion : 9 - minorVersion : 2 - patchVersion : 1 即 9.2.1。

标签: ios swift lldb xcode-ui-testing


【解决方案1】:

这是您设备上安装的调试代理中的一个错误。这些是绑定到 iOS 版本的,所以它可能在您升级设备时发生。无论如何,请向http://bugreporter.apple.com 提交错误。

如果我对问题的看法是正确的,那么它应该只在调试到设备时发生,而不是在模拟器上。这可能会让您在错误得到修复之前有一个临时的解决方法。

【讨论】:

  • "它应该只在调试到设备时发生,而不是在模拟器上。"让我试试这个并更新它。
  • 更新:你是对的! (lldb) po XCUIApplication() t = 43.01s Snapshot accessibility hierarchy for com.crunch.CrunchCastQA.iOS Attributes: Application 0x7ffedce003c0: {{0.0, 0.0}, {414.0, 736.0}}, label: 'Foo' Element subtree: 除了提交错误报告,我还有什么可以做的吗?重置内容和设置会有帮助吗?
  • 更新:重置内容和设置没有帮助。
  • 可能需要更多信息才能建议解决方法。最好通过错误报告来做到这一点。
【解决方案2】:

使用您的测试目标或任何其他可能将您的 IPHONEOS_DEPLOYMENT_TARGET 设置为低于 9.0 的方式仔细检查您的 .xcconfig。 由于 UITest 仅适用于 iOS9.0 或更高版本,将 IPHONEOS_DEPLOYMENT_TARGET 更改为 9.0+ 应该可以解决此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 2018-07-04
    • 2020-08-25
    相关资源
    最近更新 更多