Dans le domaine des chipsets ARM, qui est le facteur commun, toute la pile Android, du noyau quasi identique basé sur Linux, est en fait 32 bits, compilée de manière croisée à partir d'un environnement hôte 32 bits / 64 bits, l'environnement hôte est 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 Ubuntu .
La bibliothèque d'exécution d'Android (médias, graphiques, système de fichiers, pour n'en nommer que quelques-uns) est également en 32 bits, mais à mesure que nous atteignons la couche du dalvikvm, le nombre de bits devient alors inutile, comme c'est le cas à présent, les apks arrivant sur le Google Play Store sont des bytecodes natifs (un "sous-produit" de code Java généré compilé en un bytecode portable) qui cible la DalvikVM (machine virtuelle) qui interprète et traduit à son tour le bytecode visant le jeu d'instructions ARM brutes.
Froyo était le dernier Android à avoir permis la compilation dans un environnement hébergé de 32 bits dans lequel il était compilé de manière croisée en visant le chipset ARM.
Gingerbread était le premier du "futur" Android, il y a trois ans environ, qui imposait l'utilisation d'un environnement hébergé à 64 bits dans lequel il était construit. Il y avait beaucoup de choses à faire pour que Gingerbread soit construit dans un environnement hébergé 32 bits.
ICS et JB, et les versions ultérieures, requièrent désormais un environnement 64 bits pour accélérer la compilation et réduire les délais d'exécution.
Donc, pour résumer, ce que vous voyez sur le Play Store n'a pas d'incidence sur le fait d'utiliser 32 bits ou 64 bits et donc non pertinent.
Note latérale: Une distribution Linux typique de 16 Go de RAM / Quad core / 64 bits, le temps nécessaire à la création d'un ICS à partir de rien prend 30 minutes au maximum. Si cela avait été une distribution Linux 32 bits, cela aurait pris plus de temps, ce qui pourrait provoquer une panne du processeur. comme il n’ya tout simplement pas assez de puissance de traitement pour produire du code compilé, ce qui est un processus très exigeant et exigeant!
Preuve de cela.
Extrayez n'importe quel binaire ARM natif trouvé dans /system/bin
ou /system/xbin
, par exemple, /system/bin/dalvikvm
c'est le 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, la sortie attendue serait la suivante:
dalvikvm: exécutable ELB 32 bits ELF, ARM, version 1 (SYSV), lié de manière dynamique (utilise des bibliothèques partagées), supprimé
Notez la référence à ELF 32 bits et est compilée de manière croisée dans ARM. Il s'agit d'un exécutable binaire.
Passons à autre chose. Inspectons une bibliothèque partagée native trouvée dans /system/lib
, par exemple, le /system/lib/libandroid_runtime.so
problème file libandroid_runtime.so
, le résultat attendu serait le suivant:
libandroid_runtime.so: objet partagé ELB 32 bits ELF, ARM, version 1 (SYSV), lié de manière dynamique, supprimé
Encore une fois, notez que son ELF 32 bits, compilé de manière croisée dans ARM, est une bibliothèque partagée.
La clé de la compilation croisée de l' hôte se trouve dans la source de PSBA, à savoir, construire Gingerbread avait à l' origine une exigence d'être construit sur un système hôte 64 bits, voici le newsgroup linky se référant à comment patcher les scripts pour l' obtenir pour construire sur Hôte 32 bits qui possède deux correctifs, trouvés ici, pour build/core.mk
et build/main.mk
( combinés ) dans l'examen Gerrit de l'AOSP.
Par la suite, ce correctif s’est retrouvé dans les scripts de compilation d’ICS, dans lesquels j’ai eu le privilège de compiler ICS sur une plate-forme 32 bits dont la construction a pris 3 jours ( c’était un port d’ICS pour le Zte Blade ). Maintenant, les exigences sont ont accéléré, vous ne certainement besoin d' hôte 64 bits pour permettre la compilation croisée de la construction PSBA à partir ICS vers le haut :)