49 votes

Android est-il un système d'exploitation 32 bits ou 64 bits ?

Le titre est assez explicite : Android est-il un système d'exploitation à 32 ou 64 bits ? Je suppose que c'est l'un ou l'autre et non les deux, car cela obligerait à héberger sur Google Play des binaires 32 et 64 bits. Je sais qu'il s'agit d'une question simple, et que d'autres personnes se la sont posée, mais je n'ai pas réussi à trouver de réponse sur le web, et certainement pas sur ce SE.

48voto

Nick Pierpoint Points 7976

Dans le domaine des puces ARM qui est le facteur commun, l'ensemble de la pile Android, du noyau presque identique basé sur Linux, sont en fait 32 bits, compilés de manière croisée à partir d'un environnement hôte 32 bits/64 bits, l'environnement hôte étant généralement l'une des distributions de Linux. La distribution recommandée par Google pour la construction et la compilation croisée d'Android est la suivante Ubuntu .

La bibliothèque d'exécution Android (médias, graphiques, système de fichiers, pour n'en citer que quelques-uns) est également en 32 bits, mais lorsque nous atteignons la couche de la dalvikvm, le nombre de bits n'a plus d'importance car, à ce stade, les apks provenant du Google Play Store sont en bytecode natif (un "sous-produit" du code Java généré compilé en bytecode portable) qui cible la DalvikVM (machine virtuelle) qui, à son tour, interprète et traduit le bytecode en ciblant le jeu d'instructions ARM brut.

Froyo était le dernier Android qui permettait la compilation dans un environnement hébergé 32 bits dans lequel il était compilé de manière croisée en ciblant les puces ARM.

Gingerbread a été le premier des "futurs" Android, à l'époque, il y a environ trois ans, qui a introduit l'obligation d'utiliser un environnement hébergé 64 bits dans lequel il a été construit. Il y a eu de nombreuses manipulations pour que Gingerbread soit construit dans un environnement hébergé 32 bits.

ICS et JB, et les versions ultérieures, requièrent définitivement un environnement 64 bits pour accélérer la compilation et réduire les délais de construction.

Donc, pour résumer, ce que vous voyez sur le Play Store n'a aucune incidence sur l'utilisation de 32 ou 64 bits et n'est donc pas pertinent.

Remarque : pour une distribution Linux typique de 16 Go de RAM, quadruple cœur et 64 bits, le temps nécessaire à la construction d'ICS à partir de zéro est de 30 minutes maximum. Si cette distribution était une distribution Linux 32 bits, cela aurait pris plus de temps et aurait même pu provoquer un effondrement du processeur, car il n'y a tout simplement pas assez de puissance de traitement pour produire du code compilé en croisé, ce qui pourrait entraîner des problèmes de sécurité. est un processus très exigeant et éprouvant !

Preuve en est.

Tirez dans n'importe quel binaire ARM natif trouvé dans /system/bin ou /system/xbin par exemple, /system/bin/dalvikvm Il s'agit du binaire Dalvik VM qui est responsable des couches supérieures de Java et des APK.

Maintenant, examinez le binaire en lançant cette commande : file dalvikvm qui donne un résumé du type de fichier dont il s'agit, le résultat attendu serait le suivant :

dalvikvm : exécutable ELF 32-bit LSB, ARM, version 1 (SYSV), lié dynamiquement (utilise des librairies partagées), dépouillé.

Remarquez la référence à ELF 32 bits, qui est compilé de manière croisée pour ARM et est un exécutable binaire.

Bien, continuons, inspectons une bibliothèque partagée native trouvée dans /system/lib par exemple, /system/lib/libandroid_runtime.so maintenant le numéro file libandroid_runtime.so le résultat attendu serait le suivant :

libandroid_runtime.so : ELF 32-bit LSB objet partagé, ARM, version 1 (SYSV), lié dynamiquement, dépouillé.

Encore une fois, remarquez qu'il s'agit d'un fichier ELF 32 bits, compilé de manière croisée pour ARM et d'une bibliothèque partagée.

La clé de la compilation croisée de l'hôte se trouve dans les sources de l'AOSP, c'est-à-dire que la version Gingerbread devait à l'origine être construite sur un système hôte 64 bits. lien se référant à comment corriger les scripts pour qu'ils soient compilés sur un hôte 32 bits ? qui a deux correctifs, trouvés ici, pour build/core.mk y build/main.mk ( combiné ) sur la revue Gerrit de l'AOSP.

Par la suite, ce correctif s'est retrouvé dans les scripts de construction d'ICS. J'ai eu le privilège de compiler ICS sur une plateforme 32 bits, ce qui a pris 3 jours pour le faire ( c'était un portage d'ICS pour le Zte Blade ). Maintenant, les exigences sont accrues, vous faire Il faut absolument un hôte 64 bits pour permettre la compilation croisée de l'AOSP à partir de ICS :)

0 votes

Vous voulez donc dire que la compilation et l'exécution d'un an sur un système Android 32 bits sont plus lentes qu'en 64 bits ? Est-ce une exigence générale d'être tout en 64 bits pour les OS Android modernes tels que Kitkat o L ?

1 votes

Il existe désormais des appareils ARM 64 bits fonctionnant sous Android 64 bits.

2 votes

Je décline le vote parce que la plupart des réponses concernent les environnements habituels. compiler Android, ce qui n'a rien à voir avec la question.

10voto

Andy Brudtkuhl Points 1714

À l'origine, Android a été écrit pour les processeurs 32 bits uniquement : et plus précisément, les processeurs ARM 32 bits. Plus tard, Intel et MIPS ont beaucoup investi pour qu'Android supporte également leurs architectures, mais toujours pour les processeurs 32 bits. Ils ont pu le faire sans (beaucoup) de problèmes de compatibilité, car la plupart des applications ne sont pas livrées sous forme de binaires. Ecrites en Java, elles sont plutôt livrées sous forme de bytecode qui a machine virtuelle sur le téléphone est compilé en fonction de l'architecture du téléphone lorsque l'application est exécutée. Certaines applications comprennent indigène qui sont livrés sous forme de binaire. Ceci est fait pour rendre certains types d'applications plus rapides (en particulier les jeux), ou pour permettre à l'application d'accéder à des bibliothèques C qui ne sont pas disponibles en Java. Ces applications peuvent inclure plus d'un binaire pour les parties en code natif, pour leur permettre de fonctionner sur différentes architectures. Malgré cela, la majorité des applications ne sont que Java et fonctionnent donc sur n'importe quelle architecture.

Tout ce qui précède était vrai au moment où cette question (et la plupart des autres réponses) a été écrite, mais plus maintenant. Lollipop a introduit la prise en charge des nouveaux processeurs ARM 64 bits ( ARMv8 ) ainsi que pour les processeurs x86_64 d'Intel et d'AMD, ce qui signifie qu'Android prend désormais en charge les processeurs 32 bits et 64 bits. Le Nexus 9 a été le premier appareil phare Android 64 bits. En plus de donner accès à de nouvelles extensions du jeu d'instructions, le support 64 bits signifie que les applications peuvent utiliser plus de 4 Go de RAM. La plupart des applications n'en auront pas besoin, mais les jeux haut de gamme et les logiciels de création de photos et de vidéos peuvent certainement en tirer parti : Android devient ainsi une plateforme pour les jeux de qualité console (y compris les jeux VR) et pour la création de contenu. Les applications Java n'ont pas besoin d'être mises à jour pour en profiter, car la machine virtuelle les compile toujours en fonction de l'architecture du téléphone, mais les applications avec du code natif le feront.

L'ARMv8 étant rétrocompatible avec le code 32 bits (de la même manière que x86_64 peut toujours exécuter du code x86), même les applications qui incluent du code natif pour les processeurs 32 bits peuvent toujours fonctionner sur Android 64 bits. Une application ne doit donc être compilée pour 64 bits que si elle contient du code natif. et il veut profiter de la limite supérieure de RAM ou des nouvelles fonctionnalités de l'architecture.

5voto

free3dom Points 266

Toutes les puces ARM sont actuellement en 32 bits. Pour cette raison, Android exécute tout le code dans un environnement 32 bits.

Processeurs 64 bits lancement prévu en 2014 .

1 votes

Ce n'est pas vraiment une source fiable car il s'agissait de serveurs, pour citer "Le smartphone est un peu plus éloigné", a déclaré M. Forsyth. Nous parlons d'ARM dans le contexte d'Android/Smartphones/Tablettes.

2voto

Thej Points 655

Android est-il un système d'exploitation à 32 ou 64 bits ? Je suppose que c'est l'un ou l'autre et non les deux, car cela obligerait à héberger les binaires 32 et 64 bits sur Google Play.

Ni l'un ni l'autre en fait. Android est un système d'exploitation basé sur Dalvik VM, et Google Play héberge des applications Dalvik. La VM Dalvik elle-même, comme la VM Java, est toujours en 32 bits, quel que soit le niveau de bits de la machine physique.

Comme vous vous en doutez, les applications qui sont livrées avec des binaires natifs et les applications NDK doivent être livrées avec des binaires compilés pour toutes les architectures sur lesquelles elles sont destinées à fonctionner. L'architecture la plus courante sur laquelle Android fonctionne est l'architecture ARM 32 bits, mais il existe également des appareils fonctionnant sur x86 et MIPS.

0voto

NeonzYT Points 1

Je ne fais que deviner, mais je pense que ceci explique tout simplement la situation. Cela dépend de l'appareil que vous utilisez, il y a quatre types d'OS qui sont ARM, ARM 64, X84 et X84_64. L'ARM est la plateforme 32 bits la plus populaire, l'ARM 64 est également la plateforme 64 bits la plus populaire, le X84 est une plateforme peu commune utilisée sur les Zenfones, tout comme le X84_64 qui est peu commun et utilisé sur les émulateurs Android. J'ai obtenu ces informations sur Open Gapps.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X