【问题标题】:xcodebuild: error: option 'Destination' requires at least one parameter of the form 'key=value'xcodebuild:错误:选项“Destination”需要至少一个“key=value”形式的参数
【发布时间】:2017-05-15 22:50:58
【问题描述】:

我正在使用 Visual Studio Team Services 来构建我的应用程序。当我尝试运行单元测试时,出现错误:

xcodebuild: error: option 'Destination' requires at least one parameter of the form 'key=value'

这是在升级到 Xcode 8.3 后开始的。构建服务器有 8.3,但是当我运行单元测试时,它想使用 8.2 模拟器。这失败了。

当我尝试使用 -destination 开关明确指定 8.3 模拟器时,它失败了。

-destination "platform=iOS Simulator,name=iPad Pro (9.7 inch),OS=10.3"

我也尝试在目的地周围使用撇号 ',不使用引号或撇号,以及模拟器 ID,但没有任何帮助。没有引号,我得到这个错误:

xcodebuild: error: Unknown build action 'Pro'.

【问题讨论】:

  • 手动在 build agent 上运行 xcodebuild 命令会有什么结果?调用 xctool 的结果是什么?
  • 我无法直接访问构建机器,但我可以请同事明天试试。
  • 欢迎在此处发布结果。另一方面,XCode 测试步骤的详细设置是什么?详细的构建日志是什么?

标签: ios xcodebuild azure-pipelines


【解决方案1】:

尝试使用双引号而不是单引号,如下所示:

-destination "platform=iOS Simulator,name=iPad Pro (9.7 inch),OS=10.3"

这为我解决了同样的问题。

【讨论】:

    【解决方案2】:

    我的错!我试图将-destination 参数放在“操作”框中,如下所示:

    我没有看到“高级”下的“参数”框。 当我把这个参数放在那里时,它就起作用了!

    奇怪的是它接受并尝试在“操作”框中使用 -destination 参数。

    似乎这应该被禁止,或者如果允许,处理方式与它在“参数”框中时的方式相同。

    感谢 GitHub 上的 madhurig 为我的问题提供了reply,这让我发现了我的错误。

    【讨论】:

    • 你能分享一下xCode测试任务的完整sn-p吗?我也面临同样的问题
    • 对不起,我没有这个管道了。
    【解决方案3】:

    单引号等号分隔符'key=value'的形式工作,如:

    -destination 'platform=iOS Simulator,OS=12.1,name=iPhone X'
    

    要获取已知设备列表,请使用:

    instruments -s devices
    

    【讨论】:

      【解决方案4】:

      来到这里寻找相同错误的解决方案。作为附录,您还可以将单个 key=val 传递给 -destination 例如-destination 'platform=iOS',xcodebuild 会告诉您该方案可用的所有替代方案。

      λ ~/Development/app-ios/ task/JIOS-400-Earl-Grey-Spike* xcodebuild -workspace app.xcworkspace -scheme app -destination 'platform=iOS'  -derivedDataPath "build" build-for-testing
      
      User defaults from command line:
          IDEDerivedDataPathOverride = /Users/schoudhary/Development/app-ios/build
      
      xcodebuild: error: Unable to find a destination matching the provided destination specifier:
              { platform:iOS }
      
          Missing required device specifier option.
          The device type “Generic iOS Device” requires that either “name” or “id” be specified.
          Please supply either “name” or “id”.
      
          Available destinations for the "App" scheme:
              { platform:iOS Simulator, id:D248DB01-A852-4360-A9C0-2D71AFE478D7, OS:10.3, name:iPad Air }
              { platform:iOS Simulator, id:CE87AF5A-141C-43DA-AE61-AF53593F37F7, OS:10.3, name:iPad Air 2 }
              { platform:iOS Simulator, id:E93B43E4-D24E-4927-B9EE-0375E15DCBD5, OS:10.3, name:iPad Pro (9.7 inch) }
              { platform:iOS Simulator, id:6D71DB17-0FE2-4D5E-BEE6-CC696445BA11, OS:10.3, name:iPad Pro (12.9 inch) }
              { platform:iOS Simulator, id:F7E37EF4-5E72-438A-A286-216C20158B47, OS:10.3, name:iPhone 5 }
              { platform:iOS Simulator, id:24653844-AE99-4B5B-8332-9FFD2208172F, OS:10.3, name:iPhone 5s }
              { platform:iOS Simulator, id:FD2089A4-BF3F-4F98-8E33-B7EFDCFE5B4D, OS:10.3, name:iPhone 6 }
              { platform:iOS Simulator, id:6EF0DFBD-E99E-4EB3-9C51-6E749F41B6E7, OS:10.3, name:iPhone 6 Plus }
              { platform:iOS Simulator, id:846E631C-6285-4B91-9BA6-1AB6E66C88DB, OS:10.3, name:iPhone 6s }
              { platform:iOS Simulator, id:A6943ADC-F6EF-42F6-9958-D966DFC419FC, OS:10.3, name:iPhone 6s Plus }
              { platform:iOS Simulator, id:B41ABED0-7554-438A-97AC-F34943ED4D79, OS:10.3, name:iPhone 7 }
              { platform:iOS Simulator, id:20F1582C-0D19-4F42-9DAD-43138FB923B9, OS:10.3, name:iPhone 7 Plus }
              { platform:iOS Simulator, id:683BB5CA-E0A8-4CE4-B0DD-AED4C4295B90, OS:10.3, name:iPhone SE }
      
          Ineligible destinations for the "App" scheme:
              { platform:iOS, id:dvtdevice-DVTiPhonePlaceholder-iphoneos:placeholder, name:Generic iOS Device }
              { platform:iOS Simulator, id:dvtdevice-DVTiOSDeviceSimulatorPlaceholder-iphonesimulator:placeholder, name:Generic iOS Simulator Device }
      

      只是另一种获得正确目的地的有用方法。

      【讨论】:

      • 更新:在我的情况下,只需使用 id 就可以了,xcodebuild -workspace app.xcworkspace -scheme appTests -destination ‘id=FD2089A4-BF3F-4F98-8E33-B7EFDCFE5B4D’ -derivedDataPath "build" build-for-testing
      • 我知道我迟到了,但是..xcodebuild -workspace myWorkspace.xcworkspace -scheme myScheme -configuration Debug -showdestinations 只是另一种获得正确目的地的有用方法。 ?
      猜你喜欢
      • 2021-03-02
      • 2017-11-16
      • 1970-01-01
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      • 2013-02-24
      • 1970-01-01
      • 2018-10-06
      相关资源
      最近更新 更多