Azure CI升级Xcode至14.2后,SPM依赖AppCenter签名失败致构建失败
问题原因及解决方法
问题原因
Xcode 14+ 调整了Swift Package Manager(SPM)依赖的签名策略,默认要求所有构建目标(包括SPM引入的第三方子目标)完成签名配置。本地构建时Xcode会自动为SPM依赖生成临时签名逻辑,但CI环境下的命令行构建(xcodebuild)没有这套自动处理机制,导致AppCenter的AppCenter_AppCenterDistribute子目标因缺少签名团队配置报错。
解决方法
方法1:为SPM依赖配置签名(推荐)
通过Xcode为SPM引入的AppCenter子目标配置签名团队,提交配置后CI会自动读取:
- 打开项目,在左侧导航栏展开
Package Dependencies下的AppCenter - 选中
AppCenterDistribute目标,切换到Signing & Capabilities标签 - 勾选
Automatically manage signing,选择对应的开发团队 - 提交修改后的项目配置到代码仓库,重新触发CI构建
方法2:命令行构建时跳过签名(适合非上架场景)
修改xcodebuild命令,添加签名跳过参数:
完全跳过所有目标签名
xcodebuild -sdk iphoneos -configuration Release -workspace <project_name.xcworkspace> -scheme <target_name> build DSTROOT=<path/build.ds> OBJROOT=<path/build.obj> SYMROOT=<path/build.sy> SHARED_PRECOMPS_DIR=<path/build.pch> -allowProvisioningUpdates -clonedSourcePackagesDirPath /Users/runner/work/1/s/temp CODE_SIGN_IDENTITY="" CODE_SIGNING_ALLOWED=NO
仅跳过AppCenter子目标签名(主应用保留签名)
xcodebuild -sdk iphoneos -configuration Release -workspace <project_name.xcworkspace> -scheme <target_name> build DSTROOT=<path/build.ds> OBJROOT=<path/build.obj> SYMROOT=<path/build.sy> SHARED_PRECOMPS_DIR=<path/build.pch> -allowProvisioningUpdates -clonedSourcePackagesDirPath /Users/runner/work/1/s/temp "CODE_SIGN_IDENTITY=<identity_name>" OTHER_CODE_SIGN_FLAGS="--no-sign AppCenter_AppCenterDistribute"
方法3:临时修改Package.resolved文件
手动编辑项目根目录的Package.resolved文件,为AppCenter依赖添加签名禁用配置(注意Xcode可能会覆盖此修改,仅作临时方案):
{ "package": "AppCenter", "repositoryURL": "https://github.com/microsoft/appcenter-sdk-apple.git", "state": { "branch": null, "revision": "<你的依赖版本commit哈希>", "version": "<你的依赖版本号>", "disableAutomaticSigning": true } }
补充说明
本地构建正常是因为Xcode会自动为SPM依赖生成临时签名配置,而CI命令行构建无此自动处理逻辑,必须显式指定签名策略。若选择跳过签名,需确保应用仅用于内部测试或非分发场景,避免运行时出现权限问题。
内容的提问来源于stack exchange,提问作者RunLoop
相关产品推荐
相关产品推荐

