Architetture CPU

Xamarin.Android supporta diverse architetture della CPU, tra cui dispositivi a 32 bit e a 64 bit. Questo articolo illustra come indirizzare un'app a una o più architetture di CPU supportate da Android.

Panoramica delle architetture CPU

Quando si prepara l'app per il rilascio, è necessario specificare le architetture della CPU della piattaforma supportate dall'app. Un singolo APK può contenere codice macchina per supportare più architetture diverse. Ogni raccolta di codice specifico dell'architettura è associata a un'interfaccia ABI (Application Binary Interface ). Ogni ABI definisce il modo in cui si prevede che il codice del computer interagisca con Android in fase di esecuzione. Per altre informazioni sul funzionamento, vedere Dispositivi multi-core e Xamarin.Android.

Come specificare le architetture supportate

In genere, si seleziona in modo esplicito un'architettura (o architetture) quando l'app è configurata per release. Quando l'app è configurata per il debug, sono abilitate le opzioni Usa runtime condiviso e Usa distribuzione rapida , che disabilitano la selezione esplicita dell'architettura.

In Visual Studio fare clic con il pulsante destro del mouse sul progetto sotto il Esplora soluzioni e scegliere Proprietà. Nella pagina Opzioni Android controllare la sezione Proprietà creazione pacchetti e verificare che Use Shared Runtime (Usa runtime condiviso) sia disabilitato (disattivando questa opzione è possibile selezionare in modo esplicito le istanze di disponibilità da supportare). Fare clic sul pulsante Avanzate e, in Architetture supportate, controllare le architetture che si desidera supportare:

Selecting armeabi and armeabi-v7a

Xamarin.Android supporta le architetture seguenti:

  • armeabi : CPU basate su ARM che supportano almeno il set di istruzioni ARMv5TE. Si noti che armeabi non è thread-safe e non deve essere usato nei dispositivi con più CPU.

Nota

A partire da Xamarin.Android 9.2, armeabi non è più supportato.

  • armeabi-v7a : CPU basate su ARM con operazioni a virgola mobile hardware e più dispositivi CPU (SMP). Si noti che armeabi-v7a il codice del computer non verrà eseguito nei dispositivi ARMv5.

  • arm64-v8a : CPU basate sull'architettura ARMv8 a 64 bit.

  • x86 : CPU che supportano il set di istruzioni x86 (o IA-32). Questo set di istruzioni è equivalente a quello delle istruzioni di Pentium Pro, incluse le istruzioni MMX, S edizione Standard, S edizione Standard 2 e S edizione Standard 3.

  • x86_64 CPU che supportano il set di istruzioni x86 a 64 bit (detto anche x64 e AMD64).

Xamarin.Android è l'impostazione armeabi-v7a predefinita per le build di rilascio . Questa impostazione offre prestazioni significativamente migliori rispetto a armeabi. Se la destinazione è una piattaforma ARM a 64 bit, ad esempio Nexus 9, selezionare arm64-v8a. Se si distribuisce l'app in un dispositivo x86, selezionare x86. Se il dispositivo x86 di destinazione usa un'architettura CPU a 64 bit, selezionare x86_64.

Selezione di più piattaforme

Per impostare come destinazione più architetture cpu, è possibile selezionare più di un'ABI (a scapito di dimensioni maggiori del file APK). È possibile usare l'opzione Genera un pacchetto (.apk) per ogni opzione ABI selezionata (descritta in Imposta proprietà creazione pacchetti) per creare un APK separato per ogni architettura supportata.

Non è necessario selezionare arm64-v8a o x86_64 per i dispositivi a 64 bit di destinazione. Il supporto a 64 bit non è necessario per eseguire l'app su hardware a 64 bit. Ad esempio, i dispositivi ARM a 64 bit (ad esempio Nexus 9) possono eseguire app configurate per armeabi-v7a. Il vantaggio principale dell'abilitazione del supporto a 64 bit consiste nel consentire all'app di gestire più memoria.

Nota

Da agosto 2018 le nuove app dovranno usare il livello API 26 come destinazione e da agosto 2019 le app dovranno fornire versioni a 64 bit oltre alla versione a 32 bit.

Informazioni aggiuntive

In alcune situazioni, potrebbe essere necessario creare un APK separato per ogni architettura (per ridurre le dimensioni del file APK o perché l'app dispone di librerie condivise specifiche di una particolare architettura della CPU). Per altre informazioni su questo approccio, vedere Creare API specifiche dell'ABI.