Comprendre l'architecture du processeur Android (ABI) : pourquoi arm64-v8a, armeabi-v7a et x86 sont importants

Diagram showing one app bundle splitting into arm64-v8a, armeabi-v7a, and x86 architecture-specific APKs

Si vous avez déjà fusionné un ensemble de fichiers APK divisés et vu votre téléphone renvoyer "Application non installée", ou pire, l'avoir vu s'installer correctement pour planter à l'instant où vous avez appuyé sur l'icône, il y a de fortes chances que le vrai problème n'ait rien à voir avec un téléchargement corrompu. Il s'agissait presque certainement d'une question d'architecture : une inadéquation entre le processeur sur lequel votre téléphone fonctionne et le processeur pour lequel le code natif de l'application a été compilé. La plupart des utilisateurs d'Android n'ont jamais à y penser, jusqu'au moment où cela casse discrètement quelque chose, puis cela devient rapidement pertinent. Voici ce que l'architecture du processeur signifie pour un APK, pourquoi une seule application sur le Play Store est secrètement livrée sous plusieurs versions différentes d'elle-même et comment vérifier la compatibilité avant d'installer quoi que ce soit.

Qu'est-ce qu'un ABI

ABI signifie Application Binaire Interface. En termes pratiques, il s'agit du jeu d'instructions qu'une puce comprend : le format de code machine brut qu'un processeur peut exécuter directement. La plupart des applications Android, les parties écrites en Java ou Kotlin, sont compilées en bytecode qui s'exécute dans Android Runtime (ART), et ART ne se soucie pas particulièrement de la puce sur laquelle elle se trouve. Cette couche est de par sa conception indépendante de l'architecture, ce qui explique en grande partie pourquoi les applications Android « fonctionnent » généralement sur une gamme de matériel aussi large.

Le code natif est une autre histoire. De nombreuses applications, notamment des jeux, des applications d'appareil photo, des outils d'apprentissage automatique et tout ce qui effectue un traitement audio ou vidéo lourd, sont livrées avec des bibliothèques natives écrites en C ou C++ via le NDK Android. Ces bibliothèques sont compilées à l'avance en code machine pour un jeu d'instructions spécifique, et une puce conçue pour un jeu d'instructions ne peut généralement pas exécuter le code machine écrit pour un autre. C'est la raison pour laquelle les ABI existent et méritent d'être compris : dès qu'une application inclut ne serait-ce qu'une seule bibliothèque .so native, sa compatibilité devient liée aux architectures pour lesquelles la bibliothèque a été conçue.

Les architectures que vous rencontrerez

Il y avait auparavant plus de variété dans cet espace (vous vous souvenez du simple armeabi, ou MIPS?), mais d'ici 2026, le champ s'est réduit à quatre ABI qui valent la peine d'être connus :

IBILargeur de bitsAppareils typiquesRemarques
arm64-v8aBRAS 64 bitsPratiquement tous les téléphones vendus depuis environ 2019La cible par défaut pour les nouvelles applications ; Google exige depuis plusieurs années la prise en charge 64 bits pour les nouvelles soumissions sur le Play Store.
armeabi-v7aBRAS 32 bitsAppareils plus anciens ou économiques, certains téléphones à bas prix encore vendus sur les marchés émergentsToujours fourni par de nombreuses applications pour une compatibilité ascendante, même si la plupart des appareils actifs n'en ont plus besoin.
x86Intel 32 bitsAnciennes tablettes Intel, émulateurs héritésPour la plupart obsolète ; vous rencontrerez rarement un vrai téléphone x86 32 bits aujourd'hui.
x86_64Intel 64 bitsCertains Chromebooks, émulateurs Android de bureau, quelques tablettes x86Important si vous testez des applications dans un émulateur comme un AVD Android Studio basé sur x86 ou certaines versions de BlueStacks.

Si vous possédez un téléphone acheté au cours des cinq ou six dernières années, il s’agit presque certainement d’un arm64-v8a. Les exceptions à retenir sont les émulateurs et les Chromebooks, qui fonctionnent fréquemment sur x86_64, car cela correspond au processeur sous-jacent de l'ordinateur portable ou du bureau.

Pourquoi les applications prennent la peine d'expédier plusieurs versions

Une question évidente est de savoir pourquoi les développeurs ne se contentent pas de regrouper les bibliothèques natives de chaque architecture dans un seul APK et d'en finir avec cela. Certaines applications font exactement cela, et cela s’appelle un APK universel ou « gros ». L'inconvénient est la taille. Un jeu avec des bibliothèques natives pour arm64-v8a, armeabi-v7a, x86 et x86_64, tous regroupés, peut facilement doubler ou tripler en taille par rapport à une version contenant uniquement l'architecture dont votre appareil a besoin. Multipliez cela sur des millions d'installations et vous obtenez une quantité vraiment importante de bande passante et de stockage gaspillée, pour du code qui ne s'exécutera jamais sur cet appareil.

Pour éviter ce gaspillage, Google Play et le format Android App Bundle divisent une application en un petit APK de base plus une série d'APK de configuration, dont un dédié à l'architecture. Lorsque votre téléphone demande l'application, le Play Store fournit l'APK de base avec uniquement la répartition d'architecture qui correspond à votre puce, ainsi que les répartitions de densité d'écran et de langue correspondantes. Vous vous retrouvez avec une installation qui se comporte comme une application unique mais qui est assemblée à partir de plusieurs éléments spécialement conçus en coulisses.

Comment les APK divisés et les bundles d'applications l'utilisent

Si vous avez déjà ouvert un package .apks ou .xapk et remarqué des noms de fichiers tels que split_config.arm64_v8a.apk, split_config.armeabi_v7a.apk, split_config.xxhdpi.apk et split_config.en.apk à côté d'un base.apk, c'est exactement ce système en action, simplement exporté sous forme d'ensemble de fichiers au lieu d'être livré silencieusement par le Play Store. Les divisions de densité et de langue sont généralement sûres à installer sans discernement, car un téléphone ignorera simplement les ressources dont il n'a pas besoin. La répartition de l'architecture est différente : installez la mauvaise ou ne parvenez pas à installer celle qui correspond, et vous rencontrerez de réels problèmes.

Lorsque vous utilisez un convertisseur pour fusionner un package fractionné en un seul APK installable, le processus de fusion doit choisir les divisions d'architecture à intégrer. Un bon convertisseur conserve chaque division d'architecture réellement utile, ou vous permet de choisir, plutôt que d'en garder une seule en silence et d'espérer qu'elle corresponde à votre appareil.

Que se passe-t-il lorsque l'architecture ne correspond pas

Il existe deux modes de défaillance distincts qui méritent d'être connus, car ils ont une apparence et une sensation différentes de celles d'un utilisateur régulier.

Le premier est un échec pur et simple de l’installation. Si une application est construite presque entièrement autour de code natif sans solution de secours significative, le gestionnaire de packages d'Android refusera de l'installer, faisant généralement apparaître une erreur telle que INSTALL_FAILED_NO_MATCHING_ABIS. Vous ne pourrez même jamais ouvrir l'application ; l'installateur vous arrête à la porte.

Le deuxième résultat, plus frustrant, est un succès partiel et silencieux. Si une application dispose d'un point d'entrée Java ou Kotlin qui se charge tout seul, mais tente ensuite d'appeler une bibliothèque native qui n'est tout simplement pas présente pour votre architecture, l'installation se termine normalement. Tout semble bien jusqu'à ce que vous appuyiez sur l'icône, auquel cas l'application se bloque presque immédiatement, souvent avec un UnsatisfiedLinkError enfoui dans les journaux. C'est l'histoire classique "Je l'ai converti, il s'est installé, puis il se ferme instantanément", et il s'agit presque toujours d'un problème d'architecture plutôt que d'un fichier corrompu.

Diagram comparing a matching arm64 APK that installs and runs successfully against an x86-only APK that fails to install on an arm64 phone with error INSTALL_FAILED_NO_MATCHING_ABIS

Comment vérifier l'architecture de votre propre téléphone

Pour la grande majorité des gens, c'est simple : si votre téléphone date de 2019 ou d'une version ultérieure, assumez arm64-v8a et passez à autre chose. Si vous voulez en être sûr, ou si vous avez affaire à un appareil plus ancien ou inhabituel, quelques options pratiques :

Comment vérifier les architectures prises en charge par un APK

Avant d'installer un fichier en dehors du Play Store, il vaut la peine de confirmer ce qu'il contient plutôt que de deviner. Les bibliothèques natives d'un APK se trouvent dans des dossiers nommés d'après leur architecture dans le répertoire lib/, tels que lib/arm64-v8a/ ou lib/armeabi-v7a/. Tout outil capable d'inspecter la structure interne d'un APK peut vous dire exactement lesquels de ces dossiers sont présents, ce qui vous indique exactement sur quels appareils le fichier sera exécuté.

Vérifiez avant d'installer

Notre Outil d'informations APK lit le dossier lib/ interne d'un APK et répertorie chaque architecture pour laquelle il a été conçu, afin que vous puissiez confirmer la compatibilité avant de charger quoi que ce soit. Lorsque vous convertissez un package fractionné avec notre Convertisseur XAPK en APK, nous l'affichons également automatiquement après chaque conversion, répertoriant les architectures trouvées dans le fichier fusionné et le signalant lorsqu'une build semble manquer d'une tranche dont les appareils courants auraient besoin.

APK universel vs APK Single-ABI : lequel devriez-vous utiliser?

MétriqueUniversel / gras APKAPK unique-ABI
Taille du fichierPlus grand, parfois 2 à 4xPetit, contient uniquement ce dont votre appareil a besoin
CompatibilitéFonctionne sur presque tous les appareilsFonctionne uniquement sur une architecture correspondante
Idéal pourPartager un fichier qui devrait fonctionner partout, destinataires incertainsVotre propre appareil, quand vous connaissez déjà son architecture
RisqueTrès faible risque d’inadéquation de l’ABIÉchouera ou plantera si vous choisissez le mauvais

Erreurs courantes commises par les gens avec les packages fractionnés

Points clés à retenir

  • Un ABI est le jeu d’instructions qu’une puce comprend ; cela n'a d'importance que pour les applications qui incluent du code natif (C/C++).
  • arm64-v8a couvre presque tous les téléphones modernes ; armeabi-v7a est destiné aux appareils plus anciens ; x86/x86_64 apparaissent principalement dans les émulateurs et les Chromebooks.
  • Les applications sont généralement divisées par architecture pour éviter d’envoyer du code natif inutile à chaque appareil.
  • Une architecture incompatible bloque complètement l’installation ou provoque un crash immédiat après une installation apparemment réussie.
  • Vous pouvez vérifier à la fois l'architecture de votre appareil et les architectures prises en charge par un APK avant d'installer quoi que ce soit, évitant ainsi toute incertitude.

Questions Fréquentes (FAQ)

Dois-je connaître l'architecture de mon téléphone pour installer une application Play Store normale?

Non. Le Play Store détecte automatiquement votre appareil et fournit uniquement la répartition d'architecture correspondante. Cela ne devient donc pertinent que lorsque vous chargez des APK depuis l'extérieur du Play Store.

Un APK peut-il prendre en charge plusieurs architectures à la fois?

Oui. Un APK universel ou volumineux regroupe les bibliothèques natives pour chaque architecture prise en charge dans un seul fichier. Il est plus grand mais s'installera sur n'importe quel appareil compatible, quelle que soit la puce.

Pourquoi mon APK converti s’est-il installé mais s’est-il ensuite planté immédiatement?

Cela se produit généralement lorsque l'application contient une petite quantité de code Java qui s'installe correctement, mais tente ensuite de charger une bibliothèque native qui n'était pas incluse pour l'architecture de votre appareil, en lançant une UnsatisfiedLinkError au moment de l'exécution.

Le arm64-v8a est-il rétrocompatible avec les applications armeabi-v7a?

Généralement oui. La plupart des puces arm64-v8a peuvent également exécuter des instructions ARM 32 bits, de sorte qu'un APK uniquement armeabi-v7a fonctionnera généralement toujours sur un téléphone arm64 moderne, mais pas l'inverse.

Les appareils Android x86 sont-ils toujours là en 2026?

Ils sont rares dans les téléphones aujourd'hui, mais vous trouverez toujours x86 ou x86_64 dans certaines anciennes tablettes Intel, une poignée de Chromebooks exécutant des applications Android et la plupart des émulateurs Android de bureau.

Vous n’avez pas besoin de mémoriser quoi que ce soit de tout cela. La version courte : les téléphones modernes sont presque toujours arm64-v8a, les applications sont divisées par architecture pour économiser de l'espace, et si quelque chose refuse de s'installer ou plante juste après l'ouverture, l'inadéquation de l'architecture est l'une des premières choses à exclure avant de supposer que le fichier lui-même est cassé.

Conçu et documenté par Mst Shaefale Développeur principal et architecte de packages Android • Vérifié sur Android 12-15

Mst Shaefale gère la fusion XAPK/APKS côté client, l'analyseur de manifeste binaire et les outils de signature APK v1+v2 chez xapktoapk.com. Vous repérez une commande obsolète ou un changement de système d'exploitation? Envoyez une note éditoriale.