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

Azure DevOps Pipelines中Xcode多配置文件项目签名失败求助

解决Azure DevOps Pipelines中AUv3插件+iOS App签名失败问题

我之前也碰到过几乎一模一样的AUv3插件+主App在Azure DevOps Pipelines里签名失败的坑,咱们一步步来排查修复:

先拆解核心错误原因

你收到的错误提示其实已经给出了关键线索:

Code Signing Error: No profiles for 'com.company.product_name.product_nameAUv3' were found: Xcode couldn't find any iOS App Development provisioning profiles matching 'com.company.product_name.product_nameAUv3'. Automatic signing is disabled and unable to generate a profile. To enable automatic signing, pass -allowProvisioningUpdates to xcodebuild.
Code Signing Error: Code signing is required for product type 'App Extension' in SDK 'iOS 13.7'

本质是签名配置冲突+Profile未正确加载,下面是具体解决步骤:

1. 修复Xcode任务与plist的签名配置冲突

你当前Xcode任务里设置了signingOption: auto,但exportOptions.plist里却是signingStyle: manual——这两个配置完全矛盾!当signingOption设为auto时,Azure的Xcode任务会忽略你plist里的手动签名设置,强制Xcode用自动签名模式,而你的AUv3插件可能没开启自动签名权限,导致找不到Profile。

修改方案:把Xcode任务里的signingOption改成manual,让任务完全遵循你plist里的手动签名配置:

signingOption: manual

2. 替换YAML里的中文引号

我注意到你Xcode任务里的路径用了中文引号‘’,比如:

xcWorkspacePath: ‘project_name/project.xcworkspace'
exportOptionsPlist: ‘file.plist'

YAML对字符格式要求很严格,中文引号会被解析成非法字符,导致Azure找不到你的工作区文件和plist文件,自然没法读取签名配置!

修改方案:把所有中文引号换成英文单引号''或双引号"":

xcWorkspacePath: 'project_name/project.xcworkspace'
exportOptionsPlist: 'file.plist'

3. 确保两个Provisioning Profile都被正确安装

你提到已经安装了Profile,但要确认主App和AUv3插件的Profile都通过Install Apple Provisioning Profile任务单独安装了——Azure不会自动识别plist里的两个Profile,必须分别安装它们。

添加两个安装Profile的任务到Xcode任务之前:

- task: InstallAppleProvisioningProfile@1
  displayName: 'Install Main App Provisioning Profile'
  inputs:
    provisioningProfileLocation: 'secureFiles'
    provProfileSecureFile: 'main-app-profile.mobileprovision' # 替换成你上传的主App Profile文件名
- task: InstallAppleProvisioningProfile@1
  displayName: 'Install AUv3 Extension Provisioning Profile'
  inputs:
    provisioningProfileLocation: 'secureFiles'
    provProfileSecureFile: 'auv3-extension-profile.mobileprovision' # 替换成你上传的AUv3 Profile文件名

同时检查plist里的Profile UUID是否和Azure Secure Files里上传的两个Profile的UUID完全一致(包括大小写),UUID复制错是非常常见的坑!

4. 验证Profile的类型与Bundle ID匹配

  • 确认在Apple Developer后台创建的AUv3插件Profile是App Extension类型的,不能用主App的Profile;
  • 检查Profile的Bundle IDcom.company.product_name.product_nameAUv3和你Xcode项目里插件的Bundle ID完全一致,大小写、后缀都不能错;
  • 确保两个Profile都是iOS Distribution类型(因为你plist里的method是app-store),不是Development类型。

5. 可选:添加自动更新Profile参数(如果以上都无效)

如果做完上面的步骤还是失败,可以尝试在Xcode任务里添加args参数,允许Xcode自动更新Profile:

args: '-allowProvisioningUpdates'

注意这个需要你的Azure Pipelines服务连接配置了Apple Developer账户权限(比如用Apple App Store连接类型的服务连接)。

修改后的完整Xcode任务示例

steps:
# 先安装证书
- task: InstallAppleCertificate@2
  displayName: 'Install iOS Distribution Certificate'
  inputs:
    certSecureFile: 'your-dist-cert.p12' # 替换成你的.p12证书文件名
    certPwd: '$(certificatePassword)' # 证书密码存在Azure变量组里
# 安装主App的Profile
- task: InstallAppleProvisioningProfile@1
  displayName: 'Install Main App Provisioning Profile'
  inputs:
    provisioningProfileLocation: 'secureFiles'
    provProfileSecureFile: 'main-app-profile.mobileprovision'
# 安装AUv3插件的Profile
- task: InstallAppleProvisioningProfile@1
  displayName: 'Install AUv3 Extension Provisioning Profile'
  inputs:
    provisioningProfileLocation: 'secureFiles'
    provProfileSecureFile: 'auv3-extension-profile.mobileprovision'
# 执行Xcode构建
- task: Xcode@5
  displayName: 'Xcode build'
  inputs:
    actions: 'build'
    sdk: iphoneos13.7
    xcWorkspacePath: 'project_name/project.xcworkspace'
    scheme: 'project_name - All'
    packageApp: true
    exportPath: output/
    exportOptions: plist
    exportOptionsPlist: 'file.plist'
    signingOption: manual
    teamId: '10-character development team ID'
    useXcpretty: false
    # 可选:自动更新Profile
    # args: '-allowProvisioningUpdates'

按照这些步骤调整后,应该就能解决签名失败的问题了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 09:32:31