32/64 位平台考慮

雖然 iOS 和 macOS 過去同時支援 32 和 64 位應用程式,但 Apple 已逐漸淘汰 32 位支援。

從 iOS 11 開始,32 位應用程式將不再啟動,所有 提交至 App Store 都必須支援 64 位

從 2018 年 1 月開始, 提交至 Mac App Store 的新應用程式必須支援 64 位,而且現有的應用程式必須在 2018 年 6 月之前更新。

Xamarin 的傳統 API (XamMac.dllmonotouch.dll) 僅支援 32 位應用程式。 不過,根據預設,新的 Xamarin.iOS 和 Xamarin.Mac 應用程式會使用整合 APIXamarin.iOSXamarin.Mac),因此可以視需要以 32 和 64 位為目標。

iOS

啟用 Xamarin.iOS 應用程式的 64 位組建

警告

本節基於歷史原因而包含,並協助將較舊的 Xamarin.iOS 專案移至整合 API 並支援 64 位。 所有新的 Xamarin.iOS 專案預設都會使用整合 API,並將目標設為 64 位。

對於已轉換成整合 API 的 Xamarin.iOS 行動應用程式,開發人員必須手動將組建設定更新為以 64 位為目標:

  1. 在 Solution Pad,按兩下應用程式的專案,以開啟 [項目選項] 視窗。

  2. 選取 [iOS 組建]。

  3. 針對 i 電話 模擬器,在 [支援的架構] 下拉式清單中,選取 [x86_64i386 + x86_64

    Setting Supported architectures to x86_64 or i386 + x86_64

  4. 針對實體裝置,選取其中一個可用的 ARM64 組合:

    Setting Supported architectures to one of the ARM64 combinations

  5. 按一下 [確定]

  6. 執行全新組建。

只有 i 電話 5 (或更新版本) 中包含的 A6 處理器才支援 ARMv7s。 ARMv7 程式代碼比 ARMv6 更快且更小,僅適用於 i 電話 3GS 和更新版本,而且當以 iPad 或最低 iOS 版本 5.0 為目標時,Apple 需要此程式代碼。 ARMv6 適用於所有裝置,但編譯程式不再支援 Xcode 4.5 和更新版本。

需要 ARM64 才能在 i 電話 6 或其他 64 位裝置上支援 iOS 8,而且在 iTunes App Store 中提交新的或更新結束應用程式時,Apple 將會要求它。

如需各種 iOS 裝置功能的完整瞭解,請參閱 Apple 的 裝置相容性 檔。

64 位和二進位大小增加

在 Apple 從 32 位轉換為 64 位期間,iOS 應用程式必須在 32 位和 64 位硬體上執行。 因此,Xamarin 的整合 API 可讓開發人員以兩者為目標。

以 32 位和 64 位架構為目標將會大幅增加應用程式的大小。 不過,這麼做可讓較新的裝置執行優化的程式代碼,同時仍支援較舊的裝置。

重要

如果您在將 iOS 應用程式提交至 iTunes App Store 時收到下列訊息:「 WARNING ITMS-9000:遺漏 64 位支援。從 2015 年 2 月 1 日起,上傳至 App Store 的新 iOS 應用程式必須包含 64 位支援,並使用 xcode 6 或更新版本隨附的 iOS 8 SDK 來建置。若要在專案中啟用 64 位,建議您使用預設的 Xcode 建置設定「標準架構」,以使用 32 位和 64 位程式代碼建置單一二進位檔。 您必須將支持的架構切換至其中一個可用的 ARM64 組合(如上所示)、重新編譯和重新提交。

Mac:

重要

從 2018 年 1 月開始,提交至 Mac App Store 的所有新 Mac 應用程式都必須支援 64 位。 現有的 Mac App Store 應用程式及其更新必須支援從 2018 年 6 月開始的 64 位。 請參閱 Apple的公告指南,說明如何將 Xamarin.Mac 應用程式更新為64位

大部分的新式 Mac 計算機都支援 32 位和 64 位應用程式。 MacOS 10.6 (Snow Leopard) 是在 32 位系統上執行的最後一個作業系統。 自 2010 年以來發行的大部分 Mac 都支援這兩個系統。

不同於 iOS,最新版 macOS 中引進的許多新架構僅支援 64 位模式(CloudKit、EventKit、GameController、LocalAuthentication、MediaLibrary、Multipeer 連線 ivity、NotificationCenter、GLKit、SpriteKit、Social 和 MapKit 等等)。

整合 API 可讓開發人員選擇他們想要產生的應用程式類型:32 位或 64 位。

32 位應用程式 會在 32 位和 64 位 Mac 計算機上執行、位址空間限製為 32 位,而且要求所有連結庫都是 32 位。

如果您有 32 位相依性未在 64 位模式中執行、如果您想要較小的下載,或移動至 64 位時沒有效能優點,您通常會使用此模式。

此模式會限制,因為您無法使用macOS Mavericks和macOS Yosemite 中可用的許多架構。

64 位應用程式 只會在 64 位 Mac 裝置上執行。

針對 Mac,這是慣用的作業模式,因為目前大部分的 Mac 都支援 64 位模式,而且您可以存取 Apple 所提供的一組完整架構。

啟用 Xamarin.Mac 應用程式的 64 位組建

如需使用 Xamarin.Mac 建置 64 位應用程式的相關信息,請參閱 將 Xamarin.Mac 整合應用程式更新為 64 位 指南。