使用Codemagic构建iOS应用时代码签名报错求助
问题详情
- 本地Mac采用自动签名可正常构建iOS应用,但Codemagic构建时触发代码签名错误
- Codemagic已连接Apple开发者门户,创建了iOS证书并选中了正确的可用描述文件
- Apple开发者后台「Identifiers and Capabilities」中,已为应用Bundle ID启用Associated Domains、Push Notifications、Sign in with Apple所有必要功能
- 构建错误信息:
Code Signing Error: "error: exportArchive "Runner.app" requires a provisioning profile with the Associated Domains, Push Notifications, and Sign in with Apple features."
构建脚本
name: Initialize keychain script: | keychain initialize name: Add certificates to keychain script: | keychain add-certificates name: Set up code signing settings on Xcode project script: | xcode-project use-profiles name: Install pods script: | find . -name "Podfile" -execdir pod install ; name: Flutter build ipa and automatic versioning script: | flutter build ipa --flavor production --release \ --build-name=1.0.0 \ --build-number=$(($(app-store-connect get-latest-testflight-build-number "$APP_ID") + 1)) --export-options-plist=/Users/builder/export_options.plist
排查方向与解决方案
确认Codemagic描述文件的功能完整性
Codemagic自动生成的描述文件可能未同步开发者后台最新的Bundle ID功能配置。进入Codemagic代码签名配置页,查看选中描述文件的详情,确认是否包含三个缺失的功能。若未包含,删除旧描述文件,待开发者后台配置完全生效后,让Codemagic重新生成新描述文件。检查
export_options.plist配置匹配度
脚本中指定了自定义导出配置文件,需验证:provisioningProfiles字段内,对应Bundle ID的描述文件名称是否与Codemagic使用的一致- 文件中是否开启了与功能对应的配置项(如
associatedDomains、pushNotifications),且与开发者后台设置匹配
若配置有误,可修改plist文件,或直接移除--export-options-plist参数,让Flutter自动生成适配的导出配置。
验证Xcode项目签名配置同步
执行xcode-project use-profiles后,可能未正确覆盖项目签名设置。可在脚本中添加检查步骤:
xcode-project show-provisioning-profiles
同时确认本地Xcode项目中,production Flavor对应的Target已启用所有必要Capabilities,确保Codemagic脚本能正确同步这些配置。
检查Pod依赖的签名配置
部分Pod可能需要单独配置权限,执行pod install后,确认Pods项目的Target是否启用了对应Capabilities,或在Podfile中添加配置,保证Pod签名设置与主项目一致。重新同步开发者门户连接
若Codemagic与Apple后台存在同步延迟,可解绑并重新连接开发者门户,再重新生成证书和描述文件,确保所有配置同步到位。
内容的提问来源于stack exchange,提问作者Jan

