CPU 架構

Xamarin.Android 支援數個 CPU 架構,包括 32 位和 64 位裝置。 本文說明如何將應用程式設為一或多個 Android 支援的 CPU 架構。

CPU 架構概觀

當您準備應用程式以發行時,您必須指定應用程式所支援的平臺 CPU 架構。 單一 APK 可以包含機器碼,以支援多個不同的架構。 每個架構特定程式代碼集合都會與 應用程式二進位介面 (ABI) 相關聯。 每個 ABI 都會定義此機器程式代碼在運行時間與 Android 互動的方式。 如需運作方式的詳細資訊,請參閱 多核心裝置和 Xamarin.Android

如何指定支持的架構

一般而言,當您的應用程式設定為 [發行] 時,您會明確地選取架構(或架構)。 當您的應用程式設定為 [偵錯] 時,會啟用 [使用共用運行時間和使用快速部署] 選項,以停用明確的架構選取。

在 Visual Studio 中,以滑鼠右鍵按兩下 方案總管 下的項目,然後選取 [屬性]。 在 [ Android 選項] 頁面底下,核取 [ 封裝屬性 ] 區段,並確認 [使用共用運行時間 ] 已停用(關閉此選項可讓您明確選取支援的 API)。 按兩下 [進階] 按鈕,然後在 [支援的架構] 下,檢查您想要支援的架構:

Selecting armeabi and armeabi-v7a

Xamarin.Android 支援下列架構:

  • armeabi – 至少支援 ARMv5TE 指令集的 ARM 型 CPU。 請注意, armeabi 不是安全線程,不應該在多CPU裝置上使用。

注意

Xamarin.Android 9.2 起, armeabi 不再支援。

  • armeabi-v7a – 具有硬體浮點運算和多個 CPU (SMP) 裝置的 ARM 型 CPU。 請注意, armeabi-v7a 機器碼不會在ARMv5裝置上執行。

  • arm64-v8a – 以 64 位 ARMv8 架構為基礎的 CPU。

  • x86 – 支援 x86 (或 IA-32) 指令集的 CPU。 此指令集相當於 Pentium Pro 的指令集,包括 MMX、SSE、SSE2 和 SSE3 指示。

  • x86_64支援 64 位 x86(也稱為 x64 和 AMD64) 指令集的 CPU。

版本組建的 Xamarin.Android 預設為 armeabi-v7a 。 此設定提供比 armeabi更好的效能。 如果您要以 64 位 ARM 平台為目標(例如 Nexus 9),請選擇 arm64-v8a。 如果您要將應用程式部署至 x86 裝置, 請選擇 x86。 如果目標 x86 裝置使用 64 位 CPU 架構,請選擇 x86_64

以多個平台為目標

若要以多個 CPU 架構為目標,您可以選取多個 ABI(代價是較大的 APK 檔案大小)。 您可以使用 [為每個選取的 ABI 選項產生一個套件 (.apk)(如 設定封裝屬性中所述),為每個支持的架構建立個別的 APK。

您不需要選取 arm64-v8ax86_64 以 64 位裝置為目標;64 位支援不需要在 64 位硬體上執行您的應用程式。 例如,64 位 ARM 裝置(例如 Nexus 9)可以執行針對 設定 armeabi-v7a的應用程式。 啟用 64 位支援的主要優點是讓您的應用程式能夠處理更多記憶體。

注意

從 2018 年 8 月開始,新應用程式都必須以 API 層級 26 為目標,而且從 2019 年 8 月開始,除了 32 位元版本之外,應用程式也都必須提供 64 位元版本

其他資訊

在某些情況下,您可能需要為每個架構建立個別的 APK(以減少 APK 的大小,或因為您的應用程式具有特定 CPU 架構專屬的共用連結庫)。 如需此方法的詳細資訊,請參閱 建置 ABI 特定 APK