Lors du téléchargement dapplications Android, jai parfois vu des applications pour armeabi-v7a
et x86
architecture.
Jai lu quelques références pour armeabi-v7a
et x86
architecture. Cependant, à la fin, je nai pas pu déterminer quels processeurs et architectures mobiles appartiennent à armeabi-v7a
et lesquels appartiennent à x86
.
À ma connaissance, les processeurs mobiles couramment utilisés dans les appareils Android sont Snapdragon (par Qualcomm), MediaTek, Exynos (par Samsung) et Kirin (par Huawei). Presque toutes les marques expliquent les spécifications dun smartphone et presque toutes les spécifications disent le processeur mobile est 64 bits ou non. Dois-je conclure que 64 bits des processeurs mobiles (Snapdragon, MediaTek, Exynos ou Kirin) appartiennent à larchitecture ARM?
EDIT:
Pour comprendre quel SoC prend en charge armeabi-v7a
Android apk et quel SoC prend en charge x86
Android apk, jai parcouru les spécifications de MediaTek Helio X30
et Snapdragon 855
. La spécification de Helio X30 dit quil prend en charge le double -core ARM Cortex-A73 et ARM quad-core Cortex-A53 mais ARM i nest mentionné nulle part dans la spécification de Snapdragon 855. Je dois donc en conclure que Helio X30 prendra en charge les applications Android armeabi-v7a
et Snapdragon 855 ne prendront pas en charge armeabi-v7a
apps?
Veuillez clarifier mes confusions.
Réponse
Voici mes notes résumées incomplètes sur le sujet, mais suffisamment pour répondre à votre question.
ENSEMBLE DINSTRUCTIONS:
Les processeurs sont constitués de matrices semi-conductrices, généralement du silicium monocristallin de qualité électronique. Ils ne connaissent ni l’anglais ni aucune autre langue humaine, ils ne comprennent que 0
et 1
. Le concepteur du processeur nous dit donc en quoi séquence de zéro « s et un », nous pouvons instruire ce processeur spécifique. Ce langage numérique dinstructions est standardisé sous la forme Machine Language
et lensemble dinstructions machine est appelé Instruction Set
. Un processeur ne peut agir que sur un ou plusieurs types spécifiques de jeu dinstructions.
Les jeux dinstructions peuvent être 8/16/32/64 bits (définit le nombre dinstructions quun processeur peut traiter à la fois ), les 2 derniers étant les plus courants de nos jours.
LANGUES DE BAS NIVEAU:
Mais écrire le code du programme (instructions) directement en langage machine (le fichier exécutable) est presque impossible car il faudra des années pour écrire et déboguer un programme raisonnablement plus volumineux (que nous pouvons écrire en quelques heures ces jours-ci). pour mettre les programmeurs à laise, Assembly Languag e a été développé, encore un langage spécifique au processeur mais relativement facile à comprendre. Le code écrit en langage dassemblage est converti en code machine par Assembler
– un programme écrit en langage machine. Les deux sont appelés langues de bas niveau.
LANGUES DE HAUT NIVEAU:
Pour réduire davantage leffort humain dans la communication avec le matériel, des langages de haut niveau ont été développés qui ne sont pas liés à un jeu dinstructions spécifique (désignant une architecture spécifique). Ceux-ci sont identiques aux langages humains, donc faciles à écrire, à comprendre, à déboguer et à appliquer à plusieurs architectures. Le code écrit en langage de haut niveau est converti en langage de bas niveau par Compiler
– un programme écrit en langage de bas niveau. Lun des langages de haut niveau les plus couramment utilisés est C. Mais parfois, le code nest pas pré-compilé en code machine, mais directement exécuté (ou compilé pendant lexécution) par Interpreter
. Java est lun de ces langages « write once, runwhere » (WORA) qui est compilé en byte-code
puis interprété par Virtual Machine
– encore un programme compilé.
INTERFACE BINAIRE DAPPLICATION (ABI):
Puisquun programme (code) indépendant de larchitecture peut être converti en code dépendant de larchitecture pour nimporte quel processeur, il est du devoir du compilateur de prendre en charge toutes les exigences dune architecture spécifique. Définition de linterface binaire dapplication (ABI). En termes simples, un ABI représente une ou plusieurs architectures spécifiques. De plus amples détails sur les ABI intégrés nécessitent un aperçu des étapes de lassemblage et de la compilation; code objet, format exécutable et liable (ELF), liaison statique (archivage) et dynamique de bibliothèques, etc.
Je viens maintenant à votre question:
QUE SONT x86
ET ARM
?
x86 est une famille de jeux dinstructions, principalement développés et fabriqués par Intel et AMD. ARM est une autre famille, conçue par une seule entité ARM Holdings
et sous licence à de nombreux fabricants de solutions embarquées, notamment Qualcomm, Mediatek, Samsung et Huawei. Snapdragon, Exynos et Kirin sont leurs noms de marque. Ce ne sont pas des fabricants de processeurs, mais ils ont des licences pour inclure des processeurs ARM avec leurs propres circuits System on Chip (SoC).
QUEST-CE QUE LE SoC?
Un System on Chip (SoC) est un petit circuit qui comprend des processeurs ainsi que dautres composants tels que GPU, RAM, Flash / eMMC (équivalent du HDD ou SSD) , Module WiFi et Bluetooth, connectivité USB, UART (ports série), JTAG (un protocole de communication série de très bas niveau), GPS, modems (pour la connectivité cellulaire) et éventuellement dautres.
ARM ABIs:
Bien que la majeure partie des applications Android soit écrite en Java, on peut programmer dans des langues natives comme C et C ++, qui doit être compilé. Android fournit son propre kit de développement natif ( NDK ) comprenant (bibliothèques, fichiers den-tête et) un compilateur capable de compiler du code pour plusieurs ABI, y compris armeabi-v7a
(armhf
dans la communauté Linux) et x86
.
Application Android (Java) elle-même nest pas spécifique à une architecture. Pendant le processus de création de lapplication, le SDK Android convertit la source Java en bytecode (.class
fichiers), puis la compile en D alvik EX ecutable (.dex
) contenant des fichiers .apk
. Ce bytecode Dalvik est interprété et exécuté dans une instance distincte de Dalvik Virtual Machine
/ ART
pour chaque application par un processus nommé Zygote
. Ou il peut être compilé de manière permanente en code machine natif (.odex
ou ) en fonction de larchitecture de lappareil lors de linstallation de lapplication (ou plus tard ). Mais si le fichier apk (zip) contient en plus des binaires / bibliothèques ELF, ceux-ci sont spécifiques à larchitecture. Les développeurs incluent généralement des bibliothèques natives pour plusieurs architectures dans leurs applications.
Applications / programmes / binaires / exécutables / bibliothèques natives construites avec des suites de compilateurs ciblant ARM Embedded ABI v7a
( armeabi-v7a ) peut être exécuté sur Application profile of 7th version of ARM processors
( Armv7-A ).
Le code compilé avec des toolchains fournis par dautres fournisseurs, ciblant la même architecture (mais avec des noms ABI différents) devrait également fonctionner sur les appareils Android.
32-BIT VS. 64-BIT:
Le processeur ARM peut être 32 bits ou 64 bits. Cela dépend des fabricants de SoC ce quils veulent construire avec leur système embarqué, par ex. Snapdragon peut être 32 bits ou 64 bits. Les processeurs ARM 32 bits ont été améliorés pour les performances et de nouvelles fonctionnalités ont été ajoutées de la version 2 à la version 7. Le support 64 bits a été introduit dans ARMv8.
Pour savoir si un périphérique est 32 bits ou 64- bit, vous devez vérifier les spécifications de son SoC puis de son processeur. Par exemple, le SoC dans Redmi Note 4 est Qualcomm Snapdragon 625 (MSM 8953) , qui contient processeur Cortex-A53
. Il « ressort clairement des spécifications techniques de Cortex-53 quil » est basé sur une architecture ARMv8
, qui peut traiter 2 types de jeux dinstructions: aarch64
(quAndroid « s arm64-v8a utilise ABI) et aarch32
(quAndroid « s armeabi-v7a ABI utilise ie rétrocompatible avec ARMv7
).
Il peut donc exécuter des binaires / bibliothèques compilés pour ces deux ABI, mais pas pour x86 ou armeabi
(appelé armel dans la communauté Linux; qui ciblait larchitecture ARMv5/v6
, et était supprimé dans NDK r17
).
CONNEXION: Un périphérique matériel 64 bits pourrait-il exécuter une version Android 32 bits?
Commentaires
Réponse
Le nombre de périphériques matériels utilisant x86 na jamais été très élevé. Il y a quelques années, Intel avait des processeurs x86 (Intel Atom) qui étaient utilisés dans certaines tablettes Android (par exemple, Samsung Galaxy Tab 10.3).
Cependant, ces tablettes nont jamais atteint un volume élevé sur le marché. Et je ne sais pas sil existe sur le marché un smartphone ou une tablette x86 qui utilise encore un processeur x86.
Cependant, il existe un cas dutilisation très courant où vous rencontrez un « appareil Android x86 »: lAndroid Émulateur.
Étant donné que le PC exécutant lémulateur utilise généralement un processeur x86, les émulateurs exécutant une image x86 (au lieu dune image basée sur ARMv7 ou ARMv8 / ARM64) peuvent utiliser les techniques de virtualisation intégrées au processeur qui se traduisent par une vitesse beaucoup plus élevée.
Commentaires
- Merci davoir expliqué en détail. Je voudrais prendre un exemple. Si jai raison, que ce soit un processeur ou un SoC, le terme x86 est associé à Intel et AMD. Je voudrais prendre un exemple.
- Jai parcouru le lien apkmirror.com/apk/mozilla/firefox/firefox-65-0-1 -release pour télécharger lapk Android Firefox. Jy ai vu deux variantes; Firefox Android apk pour larchitecture armeabi-v7a et Firefox Android apk pour larchitecture x86. Ma confusion a commencé à partir de là.
- Les SoC des appareils Android bien connus sont Snapdragon, MediaTek, Exynos, Kirin, etc. Par conséquent, je crois que je dois télécharger lapk Android pour ARM. Ai-je raison?
- @ user741975 Pour le moment, si vous choisissez
armeabi-v7a
, il fonctionnera avec une chance supérieure à 99%. Si vous possédez actuellement un appareil de classe moyenne ou haut de gamme,arm64-v8a
peut également être une option. Quoi quil en soit, vous pouvez simplement le télécharger et essayer de linstaller. Si larchitecture est incorrecte, linstallation échouera.
armeabi
pour le support en amont uniquement.