Oui, bien que cela soit moins important que sur d'autres systèmes d'exploitation
Sous Android, la plupart des applications sont écrites en Kotlin ou en Java, et ne sont pas spécifiquement en 32 bits ou 64 bits. Les développeurs les construisent à partir de code Kotlin ou Java, qui est compilé en bytecode Dalvik pour le Android Runtime. Ils téléchargent leurs applications dans cette forme sur les magasins d'applications, et les appareils les téléchargent dans la même forme.
Une fois téléchargées, les applications sont compilées de nouveau, en code machine pour l'appareil. Ce code machine est soit en 32 bits, soit en 64 bits, selon l'appareil individuel. Consultez le "Glossaire" ci-dessous pour les termes techniques que j'ai utilisés.
C'est très différent des systèmes d'exploitation Apple tels que iOS, iPadOS et autres. Les applications pour ces appareils sont compilées en code machine par le développeur, qui les télécharge dans cette forme. Cela signifiait que la transition d'Apple de 32 bits à 64 bits s'est faite plus tôt que celle d'Android, et avec moins de flexibilité.
Code natif dans les applications
Certaines applications Android, pour diverses raisons, incluent du code machine construit par le développeur, appelé "code natif", un peu comme les applications iOS. Ce code est téléchargé sur les magasins d'applications, téléchargé à nouveau sur les appareils, et exécuté directement, sans aucune étape de compilation ou de traduction en cours de route. Une application qui utilise du code natif doit fournir des versions séparées pour les appareils 32 bits et 64 bits si elle doit être utilisable sur les deux types d'appareils.
Changements dans les règles du Play Store
Depuis août 2019, les applications qui incluent du code natif doivent fournir du code natif en 64 bits. Depuis août 2021, les applications qui utilisent du code natif, mais n'ont qu'une version 32 bits de ce code, ne sont pas proposées aux appareils capables de 64 bits. Cela vise probablement à pousser les développeurs d'applications qui utilisent du code natif à soit (a) fournir du code natif en 64 bits, soit (b) arrêter d'utiliser du code natif du tout.
Ces règles ne s'appliquent pas aux applications destinées à Wear OS ou Android TV, qui ne prenaient pas en charge le 64 bits en 2019. Il semble que Wear OS se prépare maintenant pour le 64 bits, mais ce n'est pas encore le cas pour Android TV.
Changements dans les processeurs ARM
Lorsque les processeurs ARM capables de 64 bits sont apparus, ils pouvaient également exécuter du code 32 bits. Cependant, cette partie est facultative, et est progressivement abandonnée. Étant donné que le code natif ARM 32 bits et 64 bits est assez différent l'un de l'autre (beaucoup plus que le x86 32 bits et 64 bits), omettre le 32 bits rend les processeurs plus simples et donc moins chers à fabriquer.
Aux débuts du 64 bits, il y avait des appareils étranges. Certains avaient des processeurs capables de 64 bits, mais un système d'exploitation Android 32 bits, et d'autres avaient des processeurs et des systèmes d'exploitation 64 bits, mais un Android Runtime 32 bits. Cependant, tout cela est maintenant du passé.
De nos jours, bon nombre des nouveaux processeurs ARM ne peuvent pas exécuter de code 32 bits. C'est plus facile à expliquer en termes de conceptions de base d'ARM Holdings, car celles-ci forment la base de nombreuses SoC de fabricants.
Les premiers cœurs de chaque série d'ARM qui ne exécutent pas de code 32 bits sont :
Changements dans Android installé
Il est possible de construire Android comme :
- Un système d'exploitation uniquement 32 bits, adapté aux appareils avec des processeurs 32 bits.
- Un système d'exploitation uniquement 64 bits, adapté aux appareils avec des processeurs qui ne peuvent pas exécuter du code 32 bits, et utilisable sur les appareils avec des processeurs pouvant exécuter du code 32 bits si le fabricant ne souhaite pas le prendre en charge.
- Un système d'exploitation 64 bits qui peut également exécuter du code natif 32 bits. Cela convient uniquement aux appareils avec des processeurs 64 bits pouvant également exécuter du code 32 bits. Il est plus volumineux qu'un système d'exploitation uniquement 64 bits, donc certains fabricants peuvent préférer l'option uniquement 64 bits.
Les appareils Pixel récents à partir du 7a ont Android uniquement en 64 bits. Des images d' Android uniquement en 64 bits 13 et 14 pour Pixel 4a à Pixel 6 Pro sont disponibles pour les tests.
Glossaire
Code machine
Les programmes informatiques sont constitués d'instructions indiquant à l'ordinateur de réaliser des tâches spécifiques et simples. Le comportement complexe et flexible des programmes (y compris des applications) est construit à partir de nombreuses instructions individuelles. Ces instructions sont encodées en tant que nombres - car, pour les ordinateurs, tout est exprimé en nombres - et l'ensemble des instructions qu'un ordinateur peut exécuter est son "code machine". La partie de l'ordinateur qui lit les instructions en code machine et agit en conséquence est le "processeur" ou "Unité Centrale de Traitement", abrégé "CPU".
Différents types d'ordinateurs utilisent différents codes machine. Certains fabricants produisent plusieurs types d'ordinateurs, avec différents codes machine. Les codes machine sont conçus depuis environ 80 ans (en 2023) et de nouvelles idées sont encore inventées et mises en œuvre.
-
La plupart des ordinateurs de bureau utilisent les codes machine "x86" ou "x86-64", développés par Intel Corporation et son concurrent, Advanced Micro Devices, depuis les années 1970. Ces deux entreprises fabriquent et vendent des CPU. Ceci convient aux ordinateurs de bureau et portable, qui ont de l'espace pour de nombreux composants séparés.
-
Presque tous les appareils mobiles utilisent la famille de codes machine ARM, développée depuis les années 1980 par ARM Holdings. ARM ne fabrique pas de CPU. Ils concèdent plutôt des licences de leurs conceptions à d'autres entreprises, qui fabriquent des "Systèmes-sur-Puce" ou "SoC" qui incluent le CPU et tous les autres composants électroniques nécessaires dans un appareil mobile. Les mobiles n'ont pas d'espace pour de nombreux composants séparés : la plupart de leur petit volume est occupé par l'écran et la batterie.
"Bytecode Dalvik" ?
"Bytecode" est une façon de stocker les programmes informatiques qui n'est pas spécifique à un type particulier d'ordinateur. De nombreux bytecodes existent, utilisant différentes manières de représenter des programmes. Le bytecode Dalvik était utilisé dans le système Dalvik pour exécuter les applications Android utilisées dans les versions d'Android antérieures à 5.0 "Lollipop". Ce runtime utilisait une compilation à la volée.
De nos jours, le bytecode Dalvik est utilisé comme format de distribution. Lorsqu'il est téléchargé sur un appareil, il est compilé par l'Android Runtime ("ART") en le code natif approprié à être appelé par ART : 32 bits sur un appareil 32 bits, 64 bits sur un appareil 64 bits.