新 build 上传后 App Store Connect 不显示:6 个原因 + 排查清单

Xcode 说上传成功,Transporter 说投递成功,但 App Store Connect 找不到这个 build。

Xcode Organizer 显示 “Upload successful” 带绿勾。Transporter 状态条到 100% 写 “Delivered”。你刷 App Store Connect → TestFlight → Builds,build 不见。半小时过去——还是没有。你重 archive、重传,一样的结果。上传用的 Apple ID 邮箱一片寂静。你开始怀疑上传到底成没成,或者某个你看不见的校验步骤悄悄拒了。

多数情况下 build 在三种静默状态之一:还在上传后的 Processing 阶段、因为 Info.plist 或签名问题被静默拒回而拒信邮件在路上、或路由到了错的 App / Team 你没去那里看。每种状态对应不同修法;跑错的修法(比如重传)多半会增加摩擦。

常见原因

按命中率排序。

1. Apple 还在 Processing

上传后 Apple 流水做资源提取、validation、dSYM 处理、bitcode 重编译(适用时)。这一步完成前 build 不会出现在 TestFlight 或 App Store build picker。典型:10-60 分钟。高峰窗口(WWDC 后、新 iOS 发布),2-6 小时正常。

如何判断:App Store Connect → TestFlight → Builds。有时能看到 build 状态是 “Processing” 而不是完全消失。真消失了就先等 30 分钟刷新再下定论。

2. Validation 阶段静默被拒

上传后 Apple 对 IPA 做静态分析。失败(Info.plist 缺 key、不支持的架构、禁用 API、entitlement 和 App ID 不匹配)会发一封 “App Store Connect: Your app build is invalid” 的邮件,但 build 本身从不出现在 App Store Connect UI。邮件可能 5-30 分钟才到。

如何判断:查上传 Apple ID 邮箱(含垃圾)有没有 “invalid” 邮件。常见 ITMS 码:90161(缺 entitlement)、90201(binary 无效)、90685(CFBundleIdentifier 不匹配)、91053(隐私 manifest 缺)。

3. 传到了错的 App 记录或 team

你有两个 App ID(生产 + dev),Xcode 因为 scheme / 签名配置挑了 dev。或你的 Apple ID 在两个 team,上传到副 team。App Store Connect 把 build 显示在了你没去看的地方。

如何判断:App Store Connect → 左上角 team 切换器 → 切到每个 team。然后看每个 App 记录。把 archive 里的 Bundle ID 和 App Store Connect 期望的对一遍。

4. Build 号和已有 build 撞了

同一个 CFBundleShortVersionString 下每个 CFBundleVersion 必须唯一。传 1.2.3 (42) 但之前存在过 1.2.3 (42)(哪怕被丢弃),Apple 可能接受上传但静默丢重复,不给 UI 反馈。

如何判断:Activity → All Builds 查 1.2.3 下有没有任何 (42)。永远递增 build 号。

5. Agreements / banking / tax 卡住了处理

Paid Apps 协议过期、税务过期、银行无效,整个账号处理被挂起。有时传输层成功 Apple 静默停车。

如何判断:App Store Connect → Business → Agreements, Tax, and Banking。任何不是 Active 的状态都会卡。

6. Transporter / Xcode 报”成功”但传输不完整

上传途中网络抖动,或公司代理剥头,让客户端报成功 Apple 却没收到能用的。IPA 发出去了但没注册。

如何判断:下次用 Transporter(新版本,错误信息更透明)替代 Xcode Organizer。注意 “Delivered” 后面任何警告行。

动手前先确认

  • 上传后等 30 分钟再动手;同 build 号反复重传保证失败。
  • 在 Apple ID 邮箱里搜过拒信再断定 build 丢了。
  • 改之前把当前 archive 备份到本地,避免脚手架被覆盖找不回。
  • 弄清问题是只在 CI 上传出现还是本机也复现。

需要收集的信息

  • 精确上传时间戳 + 用的工具(Xcode Organizer / Transporter / xcrun altool)。
  • 上传 Apple ID 和它的 team 归属。
  • archive 的 Bundle ID、版本(CFBundleShortVersionString)、build 号(CFBundleVersion)。
  • 上传后任何提到你 App 的 Apple 邮件,包括 ITMS 码。
  • App Store Connect → Activity 该 App 的日志。

最短修复路径

Step 1:等 30 分钟再刷新

App Store Connect UI 不会稳定自动刷新。30 分钟后硬刷新(Safari/Chrome 按 Cmd+Shift+R)TestFlight Builds 页。Activity → All Builds 也刷。

Step 2:查上传者邮箱

搜上传用 Apple ID 邮箱过去 24 小时内:

  • 标题含 “Your app build is invalid”“App Store Connect”
  • 正文里的 ITMS-90xxx 码。
  • 具体问题(如 “missing UIApplicationSceneManifest”)。

垃圾箱比你想的更经常拦截这类邮件。

Step 3:核对 Bundle ID、版本、build 号

打开 archive 的 Info.plist(Xcode → Organizer → 右键 archive → Show Package Contents → Info.plist):

# 或用 plistutil
plutil -p MyApp.xcarchive/Products/Applications/MyApp.app/Info.plist | grep -E "BundleIdentifier|BundleVersion"

和 App Store Connect → App Information → Bundle ID 对照。任何不一致(拼写、.dev 后缀有无)都意味着 build 去了别的 App。

Step 4:核对 team 和 App

App Store Connect → 左上角 → 切 team。把你 Apple ID 归属的每个 team 都过一遍。每个 team 都看 Activity → All Builds。Build 可能落在了平行项目里。

Step 5:递增 build 号用 Transporter 重传

真的丢了且已等够 60 分钟:

  • Xcode 里递增 CFBundleVersion(如 4243)。
  • 重 archive。
  • 打开 Transporter,把新 IPA 拖进去,Deliver。
  • Transporter 比 Xcode Organizer 报 validation 错误更详细。
# 或命令行
xcrun altool --validate-app -f MyApp.ipa -t ios -u "$ASC_USER" -p "@keychain:ASC_PASSWORD"
xcrun altool --upload-app -f MyApp.ipa -t ios -u "$ASC_USER" -p "@keychain:ASC_PASSWORD"

--validate-app 能在占掉 build 号前先抓问题。

Step 6:在 App Store Connect 确认

上传后等 10-30 分钟看 App Store Connect → TestFlight → Builds。新 build 应该先 “Processing” 然后切到 “Ready to Submit” 之类。

怎么确认已经修好

  • 新 build 出现在 App Store Connect → TestFlight → Builds,版本和 build 号符合预期。
  • 状态在一小时内从 “Processing” 切到 “Ready to Submit”。
  • Apple ID 邮箱在 processing 完成后收到确认邮件。
  • 在 App Store → Build picker 里能选到这个 build 提交。

如果还是没修好

  1. 下次真实上传前先在本地跑 xcrun altool --validate-app 让 validation 错误本地暴露。
  2. Apple System Status 有没有 TestFlight / App Store Connect 故障;故障期间上传会停车。
  3. 手动检 IPA 里缺哪些 entitlement:
unzip MyApp.ipa -d Inspect/
codesign -d --entitlements - "Inspect/Payload/MyApp.app"
  1. 兜底向 App Store Connect support 报工单,附上传时间戳、用的 Apple ID 和 Bundle ID,他们能确认上传是否到位。

预防建议

  • 每次上传前永远递增 build 号;CI 配自动 increment。
  • CI 加预上传步骤 xcrun altool --validate-app,本地暴露问题避免 IPA 真的上 Apple。
  • 每月检查 Agreements / Banking / Tax 状态绿。
  • 生产上传都用 Transporter;错误报告比 Xcode Organizer 清晰得多。
  • 订阅 Apple Developer 邮件通知,快速看到 processing 拒回。

相关阅读

标签: #排查 #App Store #App 审核 #TestFlight