iOS 組建疑難解答
重要
Visual Studio App Center 已排定於 2025 年 3 月 31 日淘汰。 雖然您可以繼續使用 Visual Studio App Center,直到它完全淘汰為止,但有數個建議您考慮移轉至的建議替代方案。
找不到 Xcode 配置
xcworkspace
建置 或 xcproject
需要共用 Xcode 配置。 Xcode 配置會儲存在本機,讓 Xcode 可以存取它們。 根據預設,配置不會與其他人共用,或包含在原始檔控制中。
若要在 Xcode 中共享配置,請使用下列步驟:
- 選取 [產品 > 配置 > 管理配置]。
- 將 xcproject/xcworkspace 的配置設定為 共用。
- 配置的容器必須設定為您想要建置的 Xcode 專案或工作區。
- 將檔案
.xcscheme
新增至原始檔控制,並推送至遠端存放庫,讓 App Center 可以存取它。
警告
請確定您的 xcshareddata/xcschemes/
資料夾不在檔案 .gitignore
中。 這是 Xcode 儲存盤案的位置 .xcscheme
。 App Center 依賴這些檔案來正確建置專案。 只要將 .xcscheme
匯出到不同的資料夾將無法運作。
我的 iOS 組建失敗,出現 「clang: 錯誤:連結器命令失敗,結束代碼 1”
錯誤可能是由使用 xcodeproj 而非工作區建置的 App Center 所造成。 將 CocoaPods 新增至您的專案時,請在 App Center 中建置時切換至使用工作區。
指標:在您的組建記錄檔中尋找這一行:
ld: library not found for -lPods-GarageController
clang: error: linker command failed with exit code 1 (use -v to see invocation)
** ARCHIVE FAILED **
若要修正此錯誤,請開啟專案的 [建置組態],然後按兩下 [ 儲存]。 App Center 會自動為未來的組建正確選擇工作區。
說明的 iOS 簽署問題
注意
組建不支援使用非 ascii 字元的簽署身分識別。
處理布建配置檔和憑證可能是一項具挑戰性的程式。 下列秘訣應可協助您成功簽署 iOS 應用程式:
將簽署變更推送至項目之後,請將組建組態儲存在 App Center 中。 在 App Center 中,任何分支的建置組態會儲存 Xcode 專案的兩個值:
CODE_SIGN_STYLE
資料夾) 檔案中project.pbxproj
.xcodeproj
設定的 和DEVELOPMENT_TEAM
(。 每當您在手動和自動簽署之間變更或切換開發小組時,請務必在推送變更之後,將組建組態儲存在 App Center 上。 如果您在推送之後未儲存,您的組建可能會失敗,並出現簽署錯誤。使用自動簽署時,拖放正確的布建配置檔。 在 Xcode 中,在 [ 簽署] 下目標 [一般] 索引標籤中,按兩下 Xcode Managed Profile 旁的資訊圖示。 接著,您會看到具有配置檔信息的彈出視窗。 按兩下並拖曳左上方的 PROV 圖示至想要的位置 (,如下所示) 。
使用手動和自動簽署時,請記下 App Center 目前支援的選項。 App Center 完全支援手動 iOS 應用程式簽署,因此您可以使用任何類型的配置檔或憑證。 確認您上傳至 App Center 的佈建設定檔和憑證符合您在專案中指定的內容。 如果您已啟用 自動管理 Xcode 中的登入,App Center 支援使用開發人員憑證和配置檔進行應用程式簽署, (沒有散發) 。 上傳至 App Center 時,您必須從 Xcode 使用自動產生的布建設定檔。
仍然遇到問題嗎?
若要針對組建註冊並執行進行疑難解答並執行,我們建議執行下列步驟:
- 設定手動登入您的 Xcode 專案,並確定它在本機運作。
- 一旦經過驗證,請認可並推送變更至您的存放庫。
- 準備 Xcode 目標中選取的布建配置檔和憑證,並將其上傳至 App Center 組建組態。
- 最重要的是:請務必先推送專案的最新狀態,再將新的憑證和配置檔儲存至組建組態。
我的 .ipa 檔案在哪裡?
Xcodebuild 與 xcrun 不同,如果組建未簽署,則不允許產生 .ipa
檔案。 未簽署的組建會改為產生 .xcarchive
。 如果您想要產生 .ipa
具有未簽署組建成品的檔案,您可以使用 檔案 .xcarchive
來執行此動作。
使用 Xcode 的 iOS 應用程式失敗,並出現無效的位碼版本錯誤
如果您的組建失敗, error: Invalid bitcode version (Producer: '802.0.38.0_0' Reader: '800.0.42.1_0')
您會使用比專案新版 Xcode 所建置的連結庫或 Pod。 您可以在 App Center 中更新專案和建置組態,以使用較新版本的 Xcode,或切換至有問題的連結庫替代版本,其會使用相符的 Xcode 版本編譯。
我的 iOS 應用程式無法執行測試
測試失敗的常見原因是連結器命令遇到類似下列錯誤的位置:
ld: directory not found for option iPhoneSimulator10.3.sdk/Developer/Library/Frameworks
❌ ld: embedded dylibs/frameworks are only supported on iOS 8.0 and later (@rpath/XCTest.framework/XCTest) for architecture x86_64
❌ clang: error: linker command failed with exit code 1 (use -v to see invocation)
此錯誤的可能原因是 Apple Mach-O Linker 的連結類型未設定為 靜態連結庫。 若要成功建置及測試您的應用程式,請確定測試目標中的 Apple Mach-O Linker 連結器連結類型設定為靜態連結庫。
在 Xcode 9 上使用 CocoaPods 的 iOS 組建會持續失敗,我該怎麼做?
這可能是因為 Pods 專案中的簽署組態與主要專案中的簽署組態不同。 您的 Pod 是否已簽入您的存放庫? 如果是,您的 Pods 項目必須使用與 Main 專案相同的簽署方法。
如果您的 Pod 未簽入,可能會有不同的問題。 您可以在此 GitHub 問題 中搭配 建置前腳本使用一些因應措施。
由於我已將項目升級為 Xcode 10 beta,因此我的應用程式無法建置,並在目標之間的相依性中發生循環錯誤
Xcode 10 的新組建系統會偵測組建中的相依性週期,並在有任何項目時失敗您的組建。
如需如何修正組建的詳細資訊,請參閱 Apple 有關解決常見相依性週期類型的檔。