我可以使用舊版 Xcode 或 Xamarin.iOS 嗎?

Xamarin 檔假設使用最新的 Xamarin.iOS 和 Xcode,這是建議的。 不過,某些客戶偏好使用較舊的 Xamarin.iOS 和/或 Xcode,並想要結果的詳細數據。

版本資訊包含下列警告:

警告

使用舊版 Xcode

通常可以使用較舊的 Xcode 版本(高於上述 需求中所述的版本),但某些功能可能無法使用。 此外,某些限制可能需要因應措施,例如:

  • 靜態 registrar 需要 Xcode 頭檔來建置應用程式,如果 API 遺失,則會導致 MT0091MT4109 錯誤。 在大部分情況下,啟用受控連結器有助於(藉由移除 API)。
  • 除非使用 Xcode 9.0+ 工具鏈,否則 Bitcode 組建(適用於 tvOS 和 watchOS)可能無法提交至 App Store。

進一步資訊

Microsoft 強烈建議在開發和提交應用程式時使用最新的 Xcode 和最新的 Xamarin.iOS 版本。 提交應用程式時,Apple 需要使用最新的 Xcode。

請注意,使用最新的 Xcode 並不會防止您的應用程式以較舊的 iOS 版本為目標。 您支援的 iOS 版本是以 Info.plist 專案和應用程式所使用的 API 為基礎

可以並存安裝多個 Xcode 版本,並存使用不同的名稱,例如 Xcode101.appXcode102.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 遺失,則會導致 MT0091MT4109錯誤。
    • 在大部分情況下,如果未使用,則啟用 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 版本。 這可以工作一段時間,但在某些時候,蘋果將堅持新的工具,因此相應地計劃。