Architectures d’UC

Xamarin.Android prend en charge plusieurs architectures de processeur, notamment les appareils 32 bits et 64 bits. Cet article explique comment cibler une application vers une ou plusieurs architectures de processeur prises en charge par Android.

Vue d’ensemble des architectures du processeur

Lorsque vous préparez votre application pour la mise en production, vous devez spécifier les architectures de processeur de plateforme que votre application prend en charge. Un même APK peut contenir du code machine permettant la prise en charge de plusieurs architectures différentes. Chaque collection de code spécifique à l’architecture est associée à une interface binaire d’application (ABI). Chaque ABI définit la façon dont ce code d’ordinateur est censé interagir avec Android au moment de l’exécution. Pour plus d’informations sur le fonctionnement de cette fonctionnalité, consultez Appareils multicœurs & Xamarin.Android.

Comment spécifier des architectures prises en charge

En règle générale, vous sélectionnez explicitement une architecture (ou des architectures) lorsque votre application est configurée pour Release. Lorsque votre application est configurée pour le débogage, les options Utiliser le runtime partagé et utiliser le déploiement rapide sont activées, ce qui désactive la sélection de l’architecture explicite.

Dans Visual Studio, cliquez avec le bouton droit sur votre projet sous la Explorateur de solutions, puis sélectionnez Propriétés. Sous la page Options Android case activée la section Propriétés d’empaquetage et vérifiez que l’utilisation du runtime partagé est désactivée (cette désactivation vous permet de sélectionner explicitement les API à prendre en charge). Cliquez sur le bouton Avancé et, sous Architectures prises en charge, case activée les architectures que vous souhaitez prendre en charge :

Selecting armeabi and armeabi-v7a

Xamarin.Android prend en charge les architectures suivantes :

  • armeabi : processeurs ARM qui prennent en charge au moins le jeu d’instructions ARMv5TE. Notez qu’il armeabi n’est pas thread-safe et ne doit pas être utilisé sur les appareils multi-UC.

Remarque

Depuis Xamarin.Android 9.2, armeabi n’est plus pris en charge.

  • armeabi-v7a : processeurs ARM avec des opérations à virgule flottante matérielle et plusieurs appareils de processeur (SMP). Notez que le armeabi-v7a code de l’ordinateur ne s’exécutera pas sur les appareils ARMv5.

  • arm64-v8a : processeurs basés sur l’architecture ARMv8 64 bits.

  • x86 : processeurs qui prennent en charge le jeu d’instructions x86 (ou IA-32). Cet ensemble d’instructions équivaut à celui des instructions SSE, MMX, SSE, SSE2 et SSE3.

  • x86_64 processeurs qui prennent en charge le jeu d’instructions x86 64 bits (également appelé ensemble d’instructions x64 et AMD64).

La valeur par défaut armeabi-v7a de Xamarin.Android pour les builds Release . Ce paramètre offre beaucoup plus de performances que armeabi. Si vous ciblez une plateforme ARM 64 bits (par exemple, Nexus 9), sélectionnez arm64-v8a. Si vous déployez votre application sur un appareil x86, sélectionnez x86. Si l’appareil x86 cible utilise une architecture de processeur 64 bits, sélectionnez x86_64.

Ciblage de plusieurs plateformes

Pour cibler plusieurs architectures d’UC, vous pouvez sélectionner plusieurs ABI (au détriment d’une taille de fichier APK supérieure). Vous pouvez utiliser l’option Générer un package (.apk) par option ABI sélectionnée (décrite dans Définir les propriétés d’empaquetage) pour créer un APK distinct pour chaque architecture prise en charge.

Vous n’avez pas besoin de sélectionner arm64-v8a ou x86_64 pour cibler des appareils 64 bits . La prise en charge 64 bits n’est pas nécessaire pour exécuter votre application sur du matériel 64 bits. Par exemple, les appareils ARM 64 bits (tels que Nexus 9) peuvent exécuter des applications configurées pour armeabi-v7a. L’avantage principal de l’activation de la prise en charge 64 bits est de permettre à votre application de traiter plus de mémoire.

Remarque

Depuis août 2018, les nouvelles applications doivent cibler l’API de niveau 26, et à partir d’août 2019, les applications devront fournir des versions 64 bits en plus des versions 32 bits.

Informations supplémentaires

Dans certaines situations, vous devrez peut-être créer un APK distinct pour chaque architecture (pour réduire la taille de votre APK, ou parce que votre application a des bibliothèques partagées spécifiques à une architecture de processeur particulière). Pour plus d’informations sur cette approche, consultez Générer des API spécifiques à ABI.