TestFlight 建構 Processing 卡住,畫面仍在處理,應否再上傳?

先到 App Store Connect 核對 Build Uploads 狀態與交付記錄:仍是 Processing 就先不要盲目重傳;若超過 Apple 文件提示的時限,按官方指引回報或聯絡支援。只有確認為 Failed 並處理相關錯誤後,才決定是否重傳。遠端 Mac 能協助重現和驗證上傳流程,不能縮短 Apple 端的處理時間。

這篇適合單人負責建構和 TestFlight 分發、正猶豫要等還是重試的獨立開發者;也適合需要區分上傳、處理與測試分發狀態的小型團隊發布負責人,以及維護遠端 Mac 自動化發布流程的人。

先分辨上傳、處理與測試分發狀態

傳輸完成不代表 App Store Connect 已完成處理。排查時,先把觀察到的狀態分成幾個階段:上傳沒有成功、上傳後仍在 Processing、處理結果為 Failed,以及顯示 Complete 但測試者看不到建構。這些表象各自對應不同的證據入口,不能用同一個「再傳一次」處理。

Apple 的建構上傳狀態說明可用來判讀 Build Uploads 內的 Processing、Failed 與 Complete;建構狀態定義則說明建構在 App Store Connect 與 TestFlight 中的狀態。判斷時要看對應頁面的狀態名稱和訊息,不要把建構工具已結束工作,直接當成 Apple 端已處理完成。

注意:如果上傳程式回報失敗,請先確認 Build Uploads 是否留下該次交付記錄。命令執行結束、畫面跳轉或網路中斷,都不足以單獨證明 Apple 已收到完整建構。

仍顯示 Processing:留證後等待或回報

Processing 表示建構仍由 Apple 系統處理;它本身不等於本機建構錯誤,也不表示一定要重建或重傳。先記下版本、建構編號、上傳時間和目前狀態,之後比較同一筆交付是否有更新。若由 CI 或遠端 Mac 執行上傳,也要保存該次執行的命令結果與交付記錄,以便把本機操作結果和平台狀態分開核對。

Apple 文件指出,若處理超過 24 小時仍未完成,可能有問題,建議透過 Feedback Assistant 提交回報或聯絡 Apple 支援;這是轉向官方回報的判斷點,不是保證重新上傳就能解決的時限。可參閱Apple 對上傳狀態的說明,按頁面提供的建議處理,而不要無限等待或平行送出多份相同建構。

在 App Store Connect 的建構列表與中繼資料頁面,也可再核對該建構目前是否存在、狀態是否已更新;相關操作可參考查看建構與中繼資料的官方說明。如果狀態還是 Processing,先不要把本機環境問題當成既定原因。

已變成 Failed:依交付錯誤決定是否重傳

狀態轉為 Failed 後,打開該筆上傳的詳細資料,先讀取錯誤、警告和補充資訊。按照第一個可核實的錯誤決定要處理的對象:若訊息指向建構內容,就檢查產物與建構設定;若屬於上傳驗證或交付要求,就先核對相應項目。不要只看最後一行結果,也不要在未保存錯誤內容前重跑流程。

Apple 的上傳建構說明說明,Failed 上傳應先解決錯誤,再重新上傳;對於失敗的上傳,修正後可依 Apple 文件規則沿用該建構編號。這項規則只適用於確認失敗的上傳;如果建構已成功處理,不能因此推斷同一編號也能用於下一份已處理建構。

對使用 Xcode 或自動化工具的發布負責人而言,關鍵不是換一台 Mac 立即重試,而是把錯誤訊息、產物版本與上傳結果對起來。若錯誤能在本機工具鏈重現,再修正並驗證;若狀態仍由 Apple 端處理,則回到狀態頁與官方回報途徑。

顯示 Complete 卻看不到建構:檢查 TestFlight 後續條件

Complete 和「所有測試者都可以安裝」不是同一件事。請先確認建構已出現在 App Store Connect,再切換到 TestFlight 查看建構狀態、是否有待處理事項,以及測試群組和測試者是否已配置。若建構存在但測試者端沒有可用項目,應排查分發設定,而不是把問題判定成上傳失敗。

外部測試者有自己的邀請和加入流程,可依 Apple 的邀請外部測試者說明檢查邀請狀態,再參考將測試者加入建構的官方步驟核對建構與測試者的關聯。測試群組的選擇、邀請是否完成,以及建構是否可供該組測試,都要分開確認;Complete 本身不會代替這些分發動作。

若發布流程透過 API 查詢建構資訊,還可對照App Store Connect API 的建構資源欄位,確認自動化系統取得的是哪一筆建構及其狀態。這有助於避免把舊建構的結果誤認為最新一次上傳。

用可勾選清單完成遠端 Mac 重試前驗收

遠端 Mac 的價值在於提供可重現的 macOS 建構與上傳環境,方便檢查工具鏈、執行紀錄和產物;它無法控制 Apple 端的處理佇列,也不能把 Processing 直接修成 Complete。準備重試前,先完成以下檢查:

  • [ ] 記下 App Store Connect 顯示的版本、建構編號、上傳時間和狀態。
  • [ ] 保存 Build Uploads 中該筆交付的詳細訊息;若為 Failed,連同錯誤和警告一併保留。
  • [ ] 確認目前狀態確實是 Failed,而非仍在 Processing 或已 Complete。
  • [ ] 核對遠端 Mac 上的執行命令結果、建構產物與該筆交付記錄是否相符。
  • [ ] 修正可核實的錯誤後再重傳,並按 Apple 文件核對失敗上傳的建構編號規則。
  • [ ] 重傳後分別驗證 Build Uploads 處理狀態,以及 TestFlight 的建構與測試者配置。

Apple 也提供建構資源的 API 欄位供系統查詢;若自動化發布流程會讀取狀態,應將 API 回傳的建構資料和 App Store Connect 介面記錄對照,而不是只以命令成功結束作為驗收依據。

若需要了解 RUVCLOUD 的遠端 Mac 使用方式,可先查看RUVCLOUD 遠端 Mac 服務介紹,再評估這類環境是否適合用來重現本機工具鏈和驗證發布任務。

按狀態選擇等待、回報或重傳

觀察到的狀態 下一步處理 停止盲目操作的條件
Processing,未超過 Apple 文件提示的時限 記錄版本、建構編號、上傳時間及狀態,稍後重新核對同一筆交付 狀態未變成 Failed,也沒有可核實錯誤時,不重複上傳
Processing,已超過 24 小時 依 Apple 建議透過 Feedback Assistant 回報或聯絡支援 已提交官方回報後,先以該筆交付記錄追蹤,不把重傳當作替代方案
Failed,詳細資料列出錯誤 先修正對應問題,再依 Apple 的失敗上傳規則決定重傳 錯誤尚未處理,或尚未確認失敗的是哪一筆上傳時,不重跑
Complete,但 TestFlight 無法測試 核對建構狀態、待處理事項、測試群組和測試者配置 建構已存在但分發條件未完成時,不另建一份來取代檢查

常見問題 FAQ

Processing 一直沒有變化時,能不能先重新上傳?
不建議只因狀態停留在 Processing 就重新上傳。先核對同一筆交付記錄並保存版本、建構編號與上傳時間;超過 Apple 文件提示的 24 小時仍未完成時,應回報或聯絡支援。只有狀態變成 Failed 並查明錯誤後,才進入修正與重傳判斷。

App Store Connect 處理超過一天,是否代表建構檔案有問題?
不能單靠處理時間推斷建構檔案有問題。Apple 的狀態說明把 Processing 視為仍在處理,並建議超過 24 小時未完成時提交回報或聯絡支援。請保留交付記錄並依官方渠道追查,不要把時間延長直接等同於本機建構失敗。

Failed 後可以沿用原本的 build number 嗎?
先確認上傳狀態確實是 Failed,再查看該筆詳細錯誤並修正。Apple 文件對失敗上傳的處理規則允許修正後沿用該建構編號;但這不代表已成功處理的建構也能沿用編號。保留失敗交付記錄,才能分清兩者。

上傳完成,TestFlight 卻沒有顯示建構,該查哪裡?
先確認建構已完成處理並出現在 App Store Connect,再檢查 TestFlight 的建構狀態、待處理事項和測試者配置。若涉及外部測試者,還要核對邀請和加入建構的流程。Complete 不等於已自動分發,也不代表所有測試者都已取得安裝資格。

若問題已定位在本機工具鏈或上傳執行環境,使用遠端 Mac 重現流程,通常比反覆改動 Apple 端狀態更有助於找到可驗證的本機差異;但若 App Store Connect 仍是 Processing,更換環境無法修復 Apple 端延遲。相較於只靠個人電腦處理、容易受本機工具鏈與工作狀態影響的方式,遠端 Mac 可提供獨立的 macOS 發布環境;另一方面,若工作長期穩定且需要實體連接埠,自購 Mac 可能更合適。若只在發布或排錯時需要 macOS 環境,可先查看 RUVCLOUD 的方案與計費資訊,再評估是否需要租用 Mac 來復現和驗證上傳流程。