用于使用 iphone 应用程序和 watchos 应用程序构建 ios 包的 Azure devops 管道

Azure devops pipeline for building an ios bundle with iphone app and watchos app

我想使用 Azure devops 管道构建 ios 包,其中包含 iphone 应用程序和 watchos 应用程序。

有一个包含 3 个应用程序的工作区(一个用于 phone,两个用于手表)

我的工作空间:

我用下面的XCode task

- task: Xcode@5
  inputs:
    actions: 'build'
    scheme: 'MyApp'
    sdk: 'iphoneos'  
    configuration: 'Release'
    xcWorkspacePath: '$(system.defaultworkingdirectory)/MyWorkspace.xcworkspace'
    xcodeVersion: '12'

此任务启动 xcodebuild

xcodebuild -sdk iphoneos -configuration Release -workspace /Users/runner/work/1/s/MyApp/MyWorkspace.xcworkspace -scheme MyApp build

失败并出现以下错误:

error: unable to resolve product type 'com.apple.product-type.application.watchapp2' for platform 'iphoneos' (in target 'MyWatchApp' from project 'MyApp')

error: unable to resolve product type 'com.apple.product-type.watchkit2-extension' for platform 'iphoneos' (in target 'MyWatchApp Extension' from project 'MyApp')

我需要指定什么样的SDK来构建它?

我想 运行 使用 Azure 管道 xcode 任务的命令如下:

xcodebuild -configuration Release -workspace /Users/runner/work/1/s/MyApp/MyWorkspace.xcworkspace -scheme MyApp build

没有sdk规范

-sdk iphoneos

这样,每个组件的构建将遵循项目默认值,phone 应用程序将使用 iphoneos SDK 构建,watch 应用程序将使用 watchos SDK 构建。

不幸的是,如果我从 xcode 任务中删除 sdk 规范

- task: Xcode@5
  inputs:
    actions: 'build'
    scheme: 'MyApp'
    configuration: 'Release'
    xcWorkspacePath: '$(system.defaultworkingdirectory)/MyWorkspace.xcworkspace'
    xcodeVersion: '12'

然后它使用自己的默认值

-sdk $(SDK)

它会导致错误,因为 $(SDK) 未定义。

此用例的正确(但很奇怪)语法是

- task: Xcode@5
  inputs:
    actions: 'build'
    scheme: 'MyApp'
    sdk:   
    configuration: 'Release'
    xcWorkspacePath: '$(system.defaultworkingdirectory)/MyWorkspace.xcworkspace'
    xcodeVersion: '12'

将 sdk 规范留空,没有任何值。