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。 此指令集等效于前者,包括 MMX、S标准版、S标准版2 和 S标准版3 指令。

  • 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。