我可以使用舊版 Xcode 或 Xamarin.iOS 嗎?
Xamarin 檔假設使用最新的 Xamarin.iOS 和 Xcode,這是建議的。 不過,某些客戶偏好使用較舊的 Xamarin.iOS 和/或 Xcode,並想要結果的詳細數據。
版本資訊包含下列警告:
進一步資訊
Microsoft強烈建議在開發和提交應用程式時,使用最新的 Xcode 和最新的 Xamarin.iOS 版本。 提交應用程式時,Apple 需要使用最新的 Xcode。
請注意,使用最新的 Xcode 並不會防止您的應用程式以較舊的 iOS 版本為目標。 您支援的 iOS 版本是以 Info.plist 專案和應用程式所使用的 API 為基礎。
可以並存安裝多個 Xcode 版本,並存使用不同的名稱,例如 Xcode101.app 和 Xcode102.app。 如果您使用多個版本,請務必在 Visual Studio for Mac 設定中設定使用中的 Xcode,並使用xcode-select
命令行工具。
不過,罕見的情況可能需要使用較舊的元件。 本文件將說明您在使用比最新版本還舊時可能會遇到的一般挑戰。
不過,蘋果的每個版本都是獨一無二的,您可能會遇到其他陷阱,但這裡沒有記載。
這些挑戰有時是無法解決的,因此盡可能堅持支援的最新 Xcode 和最新的 Xamarin.iOS 組態。
搭配舊 Xcode 使用舊的 Xamarin.iOS
無法更新 Xamarin.iOS 和 Xcode,至少需要一段時間。 限制是,在某些時候,Apple 需要最低版本的 Xcode 才能提交您的應用程式。 此時,您應該將所有元件(macOS、Xcode 和 Xamarin.iOS)更新為最新版本(或 Apple 所需的新、最低 Xcode 版本,以及相符的 Xamarin.iOS 版本)。
通常更容易逐步更新並跟上小變更。 對於更新可能較難跟上的大型專案,使用已知的工作集可能會是很好的妥協。
搭配舊版 Xcode 使用新的 Xamarin.iOS
一般而言,Xamarin.iOS 會盡可能支援較舊的 Xcode 版本。 一些潛在的挑戰包括:
- 較新的 Xamarin.iOS 可能支援所選 Xcode 中未存在的一些功能和 API。
- 靜態registrar需要 Xcode 頭檔來建置應用程式,如果 API 遺失,則會導致
MT0091
或MT4109
錯誤。- 在大部分情況下,如果未使用,則啟用 Managed 連結器會有所幫助(藉由移除新 API 的 Managed 系結。
- 除非使用 Xcode 9.0+ 工具鏈,否則 Bitcode 組建(適用於 tvOS 和 watchOS)可能無法提交至 App Store。
搭配舊版 Xamarin.iOS 使用新的 Xcode
此使用案例明顯較困難,因為 Xamarin.iOS 無法預測新 Xcode 的變更需求。 macOS 的更新也可能造成問題,而且沒有相容性修補程式,Xamarin.iOS 的許多部分可能會受到影響。
有一些潛在的領域可能會出錯,包括:
- 與
mlaunch
不相容:- 模擬器支援可能無法正常運作(或完全無法正常運作)
- 裝置支援可能無法正常運作(或完全)
- 未知的支援
mtouch
- 不支援新的架構
- 不支援新的權利
- 不支援新的或更新的工具
- 這也會影響程式代碼簽署
新的 AppStore 提交規則
Apple 隨時保留更新 AppStore 提交規則的權利。 這些規則變更只會事先宣佈。 其中一些變更需要工具變更以支援,這需要更新的 Xamarin.iOS 元件。
除了規則變更之外,Apple 通常會將額外的驗證新增至提交的應用程式,或收緊現有的應用程式。 其中一些需要變更我們的工具(例如新的封鎖符號)。 其中許多是客戶首次提交,因為沒有規則的公告(或清單)。
摘要
盡可能遵循 Apple 的指引,在 App Store 上發行的最新 Xcode 進行開發並提交,以安全播放。
接著,使用最新發行的 Xamarin.iOS。 這會追蹤可能會影響提交應用程式的最新修正程式,並遵守最新的規則變更。
如果這是不可行的,請考慮使用相符的舊版 Xcode 和 Xamarin.iOS 版本。 這可以工作一段時間,但在某些時候,蘋果將堅持新的工具,因此相應地計劃。