Azure Pipeline构建含多个provisioning profile的Xamarin iOS应用失败如何解决
解决步骤
方法1:自动匹配已安装的描述文件(最简单,和本地构建逻辑一致)
你已经提前将主应用和服务扩展的两个描述文件都安装到了构建代理上,只需要修改XamariniOS构建任务的配置,移除强制全局指定的签名参数,让构建工具自动匹配对应bundle ID的描述文件即可:
- 找到
XamariniOS@2构建任务,删除以下两行配置:
signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)' signingProvisioningProfileID: '$(APPLE_PROV_PROFILE_UUID)'
- 修正该任务args参数末尾多余的双引号(原配置最后多了一个
",属于语法错误),修改后的args如下:
args: /p:IpaPackageDir="$(Build.ArtifactStagingDirectory)" /p:OutputPath="$(outputDirectory)/iPhone/" /p:RestorePackages=false $(buildArgs)
方法2:手动指定不同target的签名参数(适用于需要精确控制签名配置的场景)
如果需要明确指定每个target对应的描述文件,可按以下步骤调整:
- 给两个
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 }}
- 修改
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
相关产品推荐
相关产品推荐

