验证失败主因是签名、架构、配置三者不满足app store connect要求,需从归档产物反向排查:确保archive使用release配置、启用arm64、签名证书与描述文件匹配、wwdr证书有效、版本号递增且构建号纯数字。
验证失败通常不是单一环节出问题,而是签名、架构、配置三者中某处不满足 app store connect 的硬性要求。重点不是重试上传,而是从归档产物本身反向定位。
检查归档时的 Scheme 和构建配置
Archive 动作必须使用 Release 配置,且不能依赖当前连接设备的架构。
- 点击 Xcode 顶部菜单栏 Product → Scheme → Edit Scheme,左侧选中 Archive
- 右侧 Build Configuration 必须设为 Release(不是 Debug 或其他自定义名)
- 确保 Build Active Architecture Only 在 Release 配置下为 NO,否则可能漏编 arm64
- 勾选 Reveal Archive in Organizer,方便后续快速找到 .xcarchive 文件
确认签名证书与描述文件匹配
“Application failed codesign verification” 类错误,90% 源于签名链断裂或混用模式。
利用 macOS 原生能力实现本地语音识别与合成。通过 yap (Apple Speech.framework) 进行语音转文字,通过 say + ffmpeg 进行文字转语音。完全离线,无需 API 密钥。具备音质检测与智能选声功能。
- 打开项目设置 → Signing & Capabilities,确认 Team 已正确选择,且 Automatically manage signing 开关状态统一
- 若手动管理(Manual),则 Code Signing Identity 必须选 iPhone Distribution,Provisioning Profile 必须是 Distribution 类型(非 Development)
- 若开启自动签名,就不要在 Build Settings 中再手动指定 Provisioning Profile,否则会触发 conflicting provisioning settings 报错
- 检查钥匙串中 Apple Worldwide Developer Relations Certification Authority (WWDR) 是否过期:打开“钥匙串访问”,切换到“系统”和“登录”两个钥匙串,启用“显示 → 显示已过期的证书”,删除所有过期的 WWDR 证书,再重新下载安装最新版(developer.apple.com/certificationauthority/AppleWWDRCA.cer)
验证生成的二进制是否符合架构与签名要求
别等上传失败后才查,直接对 .app 文件做本地验证。
- 在 Organizer 中找到刚归档的条目,右键 → Show in Finder,进入对应 .xcarchive 文件夹 → Products → Applications → 找到你的 .app
- 终端执行:lipo -info YourApp.app/YourApp,输出中必须包含 arm64;缺失则需检查 Build Settings → ARCHS 是否含 arm64(推荐用 $(ARCHS_STANDARD))
- 验证签名完整性:codesign --display --verbose=4 YourApp.app,确认输出中 Identifier 与 Bundle ID 一致,Authority 包含 “iPhone Distribution” 且无警告
- 如需快速测试打包产物能否被 Transporter 接受,可解压 .ipa 后运行:xcrun altool --validate-app -f YourApp.ipa -u "your@appstore.com" -p "@keychain:appstore"(需提前在钥匙串中存好 App Store Connect 凭据)
核对版本号与构建号是否合规
ITMS-90189 或 “构建已存在” 提示,往往因数字规则被忽略。
- Marketing Version(版本号)必须严格递增,例如上次提交是 2.1.0,这次不能填 2.1 或 2.1.0;支持语义化版本,但不能倒退或重复
- Build Number(构建号)必须每次上传都增加,哪怕只是修复一个拼写错误;Xcode 中位于 TARGETS → General → Identity,建议用脚本自动递增,避免人工失误
- 确保 Info.plist 中的 CFBundleShortVersionString(版本号)与 CFBundleVersion(构建号)和 Xcode 界面中填写的一致,且 CFBundleVersion 是纯数字字符串(如 “105” 而非 “1.0.5” 或 “105a”)










