如何解决Transporter报错ITMS-90161:Provisioning Profile无效缺少代码签名证书
ITMS-90161 报错排查修复方案
对应报错信息:
ERROR ITMS-90161: "Invalid Provisioning Profile. The provisioning profile included in the bundle com.myapp [Payload/My App.app] is invalid. [Missing code-signing certificate]. A Distribution Provisioning profile should be used when submitting apps to the App Store. For more information, visit the iOS Developer Portal."
1. 校验归档包实际使用的签名配置
多数场景下该报错是因为实际打包时调用的签名配置和你预设的不一致,可通过以下方式校验:
- 打开Xcode的Organizer窗口,找到对应归档包,右键选择「Show in Finder」
- 右键
.xcarchive格式的归档文件,选择「显示包内容」,依次进入Products/Applications/目录 - 右键目录内的
.app文件,选择「显示包内容」,找到embedded.mobileprovision文件 - 执行命令查看该配置文件关联的证书信息:
security cms -D -i embedded.mobileprovision | grep -A12 "DeveloperCertificates" - 对比输出的证书公钥哈希、有效期,和你本地钥匙串内安装的发布证书完全一致,排除混用开发证书的情况
2. 排查证书信任状态与关联私钥
- 打开钥匙串访问,选中左侧的「系统」钥匙串,找到你使用的发布证书
- 点击证书左侧的展开箭头,确认对应私钥存在,没有出现「未找到关联私钥」的提示
- 双击证书打开详情页,查看信任设置,确认所有信任项都设置为「使用系统默认」,不要手动设置为「始终信任」,手动调整的信任状态会导致Apple服务端校验不通过
3. 排查打包配置的隐性冲突
如果使用Fastlane等自动打包工具,需重点核对配置:
- 检查Fastfile内的
gym配置,确认export_method参数设置为app-store,不要误填为ad-hoc、development - 确认
provisioningProfiles配置项中,你的应用bundleID对应的配置文件ID/名称为发布类配置,不要和开发配置混淆 - 不要同时开启Xcode的「Automatically manage signing」和手动指定配置文件,二者冲突会导致签名时自动调用错误配置
- 执行命令校验项目的全局签名配置:
xcodebuild -showBuildSettings | grep PROVISIONING_PROFILE,确认输出的配置文件指向正确
4. 清除本地缓存的无效配置
- 关闭Xcode,执行命令删除本地缓存的所有配置文件:
rm ~/Library/MobileDevice/Provisioning\ Profiles/*.mobileprovision - 清空Xcode编译缓存:
rm -rf ~/Library/Developer/Xcode/DerivedData/* - 重启Xcode后重新导入下载的发布证书与配置文件,重新归档提交
5. 校验证书与配置文件的后台状态
- 登录Apple Developer后台的「Certificates, Identifiers & Profiles」页面
- 检查你使用的发布证书状态为「Active」,没有过期或被吊销
- 检查关联的发布配置文件内选中的证书,和你本地安装的证书为同一个,配置文件状态也为「Active」
- 若使用的是2020年后推出的Apple Distribution通用证书,确认当前Xcode版本≥11.4,低版本Xcode无法识别该类型证书,会触发签名校验失败
内容的提问来源于stack exchange,提问作者Ky -
相关产品推荐
相关产品推荐

