You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Pipeline构建含多个provisioning profile的Xamarin iOS应用失败如何解决

解决步骤

方法1:自动匹配已安装的描述文件(最简单,和本地构建逻辑一致)

你已经提前将主应用和服务扩展的两个描述文件都安装到了构建代理上,只需要修改XamariniOS构建任务的配置,移除强制全局指定的签名参数,让构建工具自动匹配对应bundle ID的描述文件即可:

  1. 找到XamariniOS@2构建任务,删除以下两行配置:
signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
signingProvisioningProfileID: '$(APPLE_PROV_PROFILE_UUID)'
  1. 修正该任务args参数末尾多余的双引号(原配置最后多了一个",属于语法错误),修改后的args如下:
args: /p:IpaPackageDir="$(Build.ArtifactStagingDirectory)" /p:OutputPath="$(outputDirectory)/iPhone/" /p:RestorePackages=false $(buildArgs)

方法2:手动指定不同target的签名参数(适用于需要精确控制签名配置的场景)

如果需要明确指定每个target对应的描述文件,可按以下步骤调整:

  1. 给两个InstallAppleProvisioningProfile任务添加名称标识,分别输出各自的描述文件UUID,避免默认变量互相覆盖:
# 安装主应用描述文件
- task: InstallAppleProvisioningProfile@1
  name: installMainProfile
  displayName: 'Install Provisioning Profile'
  inputs:
    provProfileSecureFile: ${{ parameters.provisioningProfile }}  

# 安装服务扩展描述文件
- task: InstallAppleProvisioningProfile@1
  name: installExtensionProfile
  displayName: 'Install Provisioning Profile for App Extension'
  inputs:
    provProfileSecureFile: ${{ parameters.serviceExtensionProvisioningProfile }}
  1. 修改XamariniOS@2任务的args参数,添加扩展项目的签名配置(注意将ServiceExtension替换为你实际的服务扩展项目名称),同时删除全局的signingProvisioningProfileID参数:
- task: XamariniOS@2
  displayName: Build iOS ipa package
  inputs:
    solutionFile: '$(iosProjectPath)'
    configuration: '$(buildConfiguration)'
    buildForSimulator: false
    packageApp: true
    signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
    args: /p:IpaPackageDir="$(Build.ArtifactStagingDirectory)" /p:OutputPath="$(outputDirectory)/iPhone/" /p:RestorePackages=false $(buildArgs) /p:ServiceExtension_CodesignProvision=$(installExtensionProfile.provisioningProfileUuid)

内容的提问来源于stack exchange,提问作者Chris Simeone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 14:21:01