症狀: iPhone Duo 模擬器中的擴充功能無法啟動或除錯,不代表應用程式在裝置上必然失效。
最快處理: 先確認擴充功能類型,再查 Xcode 27.1 正式版發行說明;把模擬器能驗證的版面,與需在受支援環境驗證的擴充功能行為分開記錄。
本文適合有小工具、分享或其他 Extension,並在 iPhone Duo 模擬器遇到啟動或除錯問題的 iOS 獨立開發者。
也適合要確認 Xcode 27.1 工具鏈的遠端 Mac 使用者,以及準備發布 iPhone Duo 適配版本的小團隊。
最後更新:2026 年 10 月 23 日。 本文核對 Apple Developer 的 Xcode 發行資訊、iPhone Duo 開發者準備公告及擴充功能文件。RC 發行說明曾記載 iPhone Duo 模擬器無法執行和除錯多數 App Extension;但這不能單獨證明正式版仍有相同限制,也不能證明限制已修正。正式版狀態須以相應版本的官方發行說明為準。
先把 RC 註記和正式版狀態分開
排查時,先確認目前使用的是 Xcode 27.1 正式版還是 Release Candidate(RC),不要將 RC 的已知問題直接當成正式版的相容性結論。Apple 的 Xcode 27.1 RC 發行說明曾列出 iPhone Duo 模擬器無法執行和除錯多數 App Extension 的問題。
接著到 Apple Developer Releases 的版本清單查看正式版資料,並核對該版本對應的 release notes。若正式版沒有明確說明這項限制的狀態,就記為「待核實」;不能將 RC 註記直接套用,也不應僅憑未再看到註記就推定問題已修復。
Apple 的 iPhone Duo 開發者準備公告可用來確認裝置相關的開發準備資訊,但不能取代針對特定 Extension 類型的支援確認。
先按擴充功能類型定位故障表現
小工具、分享擴充功能和其他 App Extension 的觸發方式與宿主情境不同。先寫下 Extension 類型、如何呼叫、宿主 App,以及出問題時的裝置姿態。不要把「小工具沒有出現在系統入口」和「分享擴充功能被呼叫後立即結束」當成同一種故障。
| 可觀察現象 | 優先檢查 | 目前能下的判斷 |
|---|---|---|
| 系統或宿主入口找不到 Extension | 類型、安裝產物、呼叫入口及可用範圍 | 可能是發現或安裝問題;尚不能斷定模擬器不支援 |
| 已呼叫,但無法啟動 | 建置目標、簽署與執行紀錄 | 先確認專案設定,再對照正式版支援資訊 |
| 已啟動,介面或宿主通訊異常 | 復現步驟、Extension 與宿主兩端紀錄 | 可定位異常發生階段,不能只憑現象認定根因 |
針對小工具,先按小工具除錯文件所述方式確認除錯入口與觀察條件。Apple 的擴充功能文件則可協助確認所處理的類型與整合方式。這些文件描述一般開發與除錯資訊,不足以單獨證明每一種類型在 iPhone Duo 模擬器上的支援狀態。
提醒: Extension 在模擬器中沒有出現,和 Extension 已出現在入口但啟動後失敗,是兩種不同的故障。先記錄實際停在哪一階段,再選擇對應的檢查方式。
核對 Scheme、執行目標和實際安裝產物
專案可能同時有宿主 App 與多個 Extension target。若選錯 Scheme、執行目標或宿主 App,建置成功也不代表正在測試預期的擴充功能。可先依照 Apple 的 Scheme 自訂說明檢查目前 Scheme 包含哪些建置與執行目標,再確認目標裝置設定是否與本次測試一致。Apple 的模擬器與實體裝置執行說明可供核對執行方式。
在終端機查看目前 Scheme 的建置設定:
xcodebuild -showBuildSettings -scheme "$SCHEME" |
grep -E ' (PRODUCT_BUNDLE_IDENTIFIER|PRODUCT_TYPE|BUILT_PRODUCTS_DIR) ='
輸出示意如下,實際欄位和值會依專案而異:
PRODUCT_BUNDLE_IDENTIFIER = com.example.app
PRODUCT_TYPE = com.apple.product-type.application
BUILT_PRODUCTS_DIR = /path/to/Build/Products
接著從實際建置或封存產物中找到宿主 .app,檢查內含的 Extension:
find "$APP_PATH/PlugIns" -maxdepth 2 -name '*.appex' -print
有預期的 .appex 只能證明該產物中存在 Extension,不能證明模擬器一定能啟動它。若找不到產物,先回查建置目標、Scheme 與建置設定;Xcode 建置設定參考可協助比對相關欄位。若產物存在,再查看安裝與執行紀錄,避免把建置問題誤認為模擬器限制。
依故障階段收集線索,不先認定根因
把錯誤分成「入口未出現」、「已呼叫但未啟動」和「啟動後異常」三類,分別保存宿主 App、Extension 的相關紀錄及可重現步驟。記錄操作入口、當時畫面、是否完成安裝,以及每次測試採用的 Scheme 與執行目標。
若 Extension 不在預期入口,使用 Apple 的擴充功能探索文件對照其發現與整合流程。這有助於排除設定或呼叫方式不符,但不會單獨證明 iPhone Duo 模擬器支援該行為。
在不同環境重現時,也要明確寫出變動項目。若只有模擬器失敗,而建置產物和專案設定相符,這是調查支援邊界的重要線索,卻不是已確認的根因。要下結論,仍須把正式版發行說明、官方文件和替代環境的結果放在一起判讀。
把版面檢查和 Extension 行為驗收拆開
iPhone Duo 模擬器可用來檢查它實際呈現的畫面與版面情境。對於模擬器無法確認的 Extension 行為,應另找 Apple 文件允許、且團隊確實能使用的受支援環境補測;若沒有,驗收狀態就應保留為未驗證。
| 驗收路徑 | 可記錄的結果 | 不應延伸的結論 |
|---|---|---|
| iPhone Duo 模擬器版面檢查 | 畫面呈現、版面差異及可重現條件 | 不等同 Extension 啟動與整合驗收 |
| 官方文件及版本資訊核對 | 正式版是否明確說明支援或限制 | RC 的問題不能直接視為正式版結論 |
| 受支援環境補測 | Extension 是否可由預期入口啟動並完成核心流程 | 只代表該環境及該測試條件,不代表所有情境 |
若使用小工具或其他類型,先確認相應的官方文件是否適用,再記錄測試環境和功能結果。缺乏實機或替代環境時,不要用模擬器上的版面檢查結果代替 Extension 行為驗收。
發布前完成可複核的排查清單
每次排查留下足夠資料,讓團隊之後能在相同條件下回歸。下面的清單可逐項勾選:
- [ ] 記錄 Xcode 完整版本,並標明正式版或 RC。
- [ ] 寫明 Extension 類型、宿主 App、觸發入口與故障發生階段。
- [ ] 核對 Scheme、執行目標、宿主 target 和 Extension target。
- [ ] 確認預期
.appex是否存在於本次檢查的應用程式產物。 - [ ] 查閱正式版發行說明及對應的 Extension 官方文件;未找到明確結論時標記待核實。
- [ ] 分開保存模擬器版面結果與受支援環境的 Extension 行為結果。
- [ ] 將本次狀態歸類為「已驗證」、「受限未驗證」或「需進一步複核」。
下次 Apple 更新 Xcode 27.1、補充模擬器支援說明,或改變 iPhone Duo 的擴充功能測試要求時,重新核對版本資料並更新紀錄。這樣後續回歸才能分辨是官方支援狀態改變,還是專案本身的建置條件變動。
常見問題
為什麼 iPhone Duo 模擬器沒有啟動 App Extension?
先確認 Extension 類型和 Xcode 版本。RC 發行說明記載的是多數 Extension 的已知問題,不能直接代表正式版狀態。再檢查產物、宿主入口與呼叫紀錄;缺少正式版明確說明時,將結果保留為待核實。
Xcode 27.1 的 iPhone Duo 模擬器支援哪些 Extension?
不要從「多數」推論每一種類型。逐項核對正式版發行說明及對應官方文件,並以具體 Extension 類型、宿主和觸發情境記錄結果。沒有官方確認的支援結論,就不要自行列出支援清單。
怎樣確認問題出在專案,而不是模擬器?
先確認 Scheme、宿主和 Extension target 是否匹配,再檢查應用程式產物內有沒有預期的 .appex。若設定或產物不符,先修正專案;若都符合,仍需比對正式版資訊及其他受支援環境的結果,不能只靠模擬器失敗定因。
沒有 iPhone Duo 實機時,如何驗收 Extension?
用模擬器記錄其實際可檢查的版面情境;Extension 的啟動和整合行為,則用官方文件允許且團隊可取得的替代環境補測。沒有合適環境時,標記為「受限未驗證」,不要將版面檢查通過寫成完整驗收。
若目前沒有可用的 macOS/Xcode 測試環境,先查看 NUMACS 使用入門,確認遠端 Mac 環境與所需工具鏈,再依方案比較資訊判斷是否適合租用。相較於另購一台只用來測試的 Mac,遠端租用可免去前期硬體支出與閒置設備管理;相較於單靠一般模擬器,也能在取得合適環境時安排額外回歸。不過,若需要長期穩定的重度工作負載或實體介面,應先評估自有設備是否更合適。符合臨時測試需求時,可查看 NUMACS 可用方案,再決定是否租用。
常見問題
為什麼 iPhone Duo 模擬器裡的 App Extension 沒有啟動?
先確認擴充功能類型,再查 Xcode 27.1 正式版發行說明。RC 曾記載多數 App Extension 在 iPhone Duo 模擬器無法執行或除錯,但這項 RC 註記不能證明正式版仍有相同限制。若正式版資料沒有明確說明,就應把原因標為待確認,並檢查建置產物與觸發入口。
Xcode 27.1 的 iPhone Duo 模擬器支援哪些擴充功能?
不要只根據 RC 對「多數」擴充功能的描述,推定某一類必然受支援或必然不受支援。逐項核對正式版發行說明、Apple 對該類 Extension 的文件及實際執行結果;記錄小工具、分享等類型各自的宿主和觸發方式,沒有官方明確結論時標記為待核實。
怎樣分辨模擬器除錯失敗是專案問題,還是支援限制?
先檢查 Scheme、執行目標、宿主 App 與 Extension target 是否對應,再確認建置產物內有預期的 .appex。若產物或識別設定不符,應先修正專案;若這些檢查都通過,但功能仍無法由模擬器入口啟動,則不能據此認定程式碼有錯,也不能直接判定是模擬器限制,須再對照官方支援資料與其他受支援環境。
手邊沒有 iPhone Duo 實機,怎麼完成擴充功能驗收?
使用模擬器確認其實際支援的畫面與版面情境;Extension 的啟動、宿主互動或系統入口行為,則安排在官方文件允許且團隊可使用的其他受支援環境測試。若沒有可用替代環境,將該項標為「受限未驗證」,不要把版面測試通過記成擴充功能驗收完成。
延伸閱讀
NUMACS 雲端 Mac
用 NUMACS 建立可重現的 iOS 開發環境
租用 NUMACS 獨享實體 Mac,透過遠端桌面或 SSH 執行建置、測試與封存,讓工具鏈與專案環境保持一致。
