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

iOS应用Azure Pipeline‘清理并归档’步骤失败(仅使用SPM)

iOS应用Azure Pipeline‘清理并归档’步骤失败(仅使用SPM)

我来帮你分析下这个问题——你遇到的Bash exited with code '65'其实是Xcode打包过程中常见的签名/配置文件冲突问题,结合报错里提到的nanopb包信息,核心原因很明确:nanopb这个SPM依赖不支持手动指定配置文件(Provisioning Profile),但你的Pipeline里给它强制配置了AppProvisioningProfile。

给你几个针对性的解决办法:

  • 检查Azure Pipeline的归档任务配置:如果是用可视化界面配置的Xcode任务,找到是否有给所有目标统一设置provisioningProfileUuid或provisioningProfileName的选项,把这些全局配置去掉,只给你的主应用目标指定配置文件就行——SPM的第三方包不需要单独配置签名,Xcode会自动用“自动管理签名”处理它们。
  • 调整Xcode项目内的签名设置:打开你的项目,找到nanopb相关的目标(在Project导航栏的Package Dependencies下),进入Build Settings的Signing板块,勾选Automatically manage signing,确保它不使用手动指定的配置文件。
  • 如果是用YAML编写的Pipeline,检查Xcode@5任务的参数:不要给整个任务传递provisioningProfileId,而是通过xcargs参数只给主应用指定配置,比如xcargs: "-allowProvisioningUpdates -destination 'generic/platform=iOS' PROVISIONING_PROFILE_SPECIFIER=AppProvisioningProfile",这样只会把配置文件应用到主应用,不会影响SPM依赖。另外可以添加-skipPackagePluginValidation参数,避免SPM包的签名验证冲突。
  • 清理Pipeline缓存:有时候旧的SPM缓存或配置文件缓存会导致问题,在归档步骤前添加一个清理步骤,比如执行rm -rf ~/Library/Caches/org.swift.swiftpm或者用Azure的Cache任务清理相关缓存目录。

这类问题的本质是SPM依赖和主应用的签名策略不匹配,只要让第三方包用自动签名,主应用保持手动指定配置文件的策略,就能解决这个报错啦。

备注:内容来源于stack exchange,提问作者Dmitry

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 17:09:30