Le runtime ART pilote l’exécution des applications sur le système Android et remplace la machine virtuelle Dalvik. Il compile Java et Kotlin en bytecode optimisé, puis génère du code natif pour chaque architecture. Les mises à jour modulaires via le Play Store permettent des optimisations sans mise à jour complète du système.
Depuis Android 12, Google distribue ART via des modules APEX pour accélérer les déploiements et corriger des vulnérabilités. Les optimisations du compilateur et du runtime ont réduit le temps de lancement observable sur plusieurs appareils. Ces gains techniques orientent les éléments essentiels à retenir ci‑dessous.
A retenir :
- Réduction du temps de démarrage jusqu’à trente pour cent sur certains appareils
- Optimisation mémoire et économie d’énergie pour services background et applications mobiles
- Compilation AOT combinée au profilage JIT pour méthodes critiques priorisées
- Mises à jour modulaires via Play Store sans mise à jour complète système
Prompt pour image technique :
ART et runtime Android : impact sur le temps de compilation
Partant des points clés, examinons comment ART réduit le temps de compilation des applications et améliore la vitesse perçue par l’utilisateur. Le module ART APEX inclut un grand nombre d’API et un compilateur ciblant le matériel sous-jacent. Comprendre ces artefacts guide le réglage des flags et des stratégies de précompilation pour les builds.
Comprendre les artefacts produits par dex2oat
Ce H3 détaille les artefacts que dex2oat produit et leur rôle pour le démarrage et l’exécution des processus. Les fichiers .art et .oat contiennent du code machine optimisé pour chaque architecture de chipset cible. Selon Android Open Source Project, la précompilation AOT diminue la charge au runtime en déplaçant le coût hors de l’exécution directe.
Composant
Rôle
Effet sur temps de compilation
dex2oat
Compilation du bytecode DEX en code natif
Réduit la compilation au runtime, charge initiale augmentée
libart.so
Environnement d’exécution chargé au démarrage
Influence la charge d’artefacts et le démarrage des apps
Profils JIT
Identification des méthodes chaudes pour AOT
Optimisation ciblée sans recompilation complète
Fichiers .art/.oat
Contiennent le code machine optimisé spécifique
Accélèrent l’exécution après installation
Paramètres dex2oat système :
- dalvik.vm.dex2oat-cpu-set affinité processeurs
- dalvik.vm.dex2oat-threads nombre de threads dex2oat
- dalvik.vm.dex2oat-Xmx mémoire maximale pour compilation
- dalvik.vm.image-dex2oat-filter filtre pour images de démarrage
Paramètres et flags dex2oat en pratique
Ce H3 relie les artefacts aux choix de flags et à l’affectation CPU pendant la compilation afin de réduire la contention. Ajuster le nombre de threads et l’affinité CPU permet d’accélérer dex2oat et de stabiliser les builds. Selon Android Developers Blog, la configuration adéquate évite des plantages et améliore les temps de compilation mesurables.
« J’ai observé un démarrage d’application plus rapide après l’activation du profilage speed-profile sur nos builds pilotes. Cela a réduit la latence de premier lancement significativement. »
Alice D.
Cette observation confirme l’utilité du profilage JIT suivi d’une AOT sélective pour les méthodes critiques. Tester localement reste indispensable pour valider le gain et le compromis espace/performance. La pratique guide ensuite la mise en place d’OTAs et de scripts CI adaptés.
Prompt pour image explicative :
Configurer ART pour réduire le temps de compilation des applications
Sachant comment les artefacts s’organisent, la configuration devient le levier suivant pour accélérer les builds et améliorer la performance. Les options comme dexpreopt et les filtres de compilation permettent des compromis mesurables entre empreinte et vitesse. Ces choix conduisent à des stratégies de précompilation et de déploiement OTA adaptées aux usages.
Choix de filtres de compilation pour optimisation
Ce H3 présente les filtres officiels et leurs usages recommandés selon contraintes d’espace et d’exigence de démarrage. Les filtres existent depuis plusieurs versions et restent pertinents pour prioriser les composants critiques. Selon Wikipédia et Android Developers Blog, le filtre speed-profile offre souvent le meilleur compromis pour les builds système.
Filtre
Description
Usage recommandé
verify
Vérification du bytecode sans compilation AOT
Images avec stockage restreint
speed
Compilation AOT plus complète pour performance initiale
Composants critiques pour démarrage
speed-profile
Compilation guidée par profils JIT puis AOT
Bon compromis espace/performance
everything
Compilation AOT exhaustive pour performance maximale
Usage serveur ou builds spécialisés
Choix de filtres :
- verify vérification sans AOT pour limites de stockage
- speed AOT ciblé pour composants critiques
- speed-profile profilage JIT puis AOT pour compromis
- everything AOT exhaustive pour performance maximale
Un exemple concret : certaines images systèmes ont adopté speed-profile pour équilibrer espace et vitesse. Selon Android Developers Blog, cette option a permis une adoption rapide d’OpenJDK par les appareils. Le choix final dépend toujours des tests sur la gamme de devices ciblés.
Prompt pour image illustrative :
Options de dexpreopt et filtres de compilation
Ce H3 montre comment dexpreopt et la précompilation système limitent la charge au premier démarrage et améliorent la cohérence des lancements. La précompilation lors de la création d’image réduit le travail au premier lancement et prépare l’appareil pour des OTAs plus efficaces. Selon Android Open Source Project, dexpreopt reste une étape clé pour les images système optimisées.
« Nous avons choisi speed-profile pour certaines apps système et mesuré un compromis espace/temps favorable. »
Marc L.
Ces retours terrain confirment que les gains varient selon la nature de l’application et la cible matérielle. L’intégration de scripts d’OTA dans le pipeline CI automatise la distribution des optimisations sans surprise pour l’utilisateur. Tester sur plusieurs devices demeure la meilleure garantie de qualité.
Prompt pour image opérationnelle :
Stratégies de précompilation et OTA pour l’optimisation runtime
Après la configuration, l’optimisation opérationnelle focalise sur la précompilation en arrière-plan et les mises à jour OTA pour limiter l’impact utilisateur. Les approches A/B et la compilation asynchrone permettent de précompiler sans pénaliser le premier lancement. Ces mécanismes rendent la maintenance évolutive et améliorent la constance des temps de démarrage.
Compilation en arrière-plan et profils de recompilation
Ce H3 explique les profils background et les variables qui déclenchent la recompilation ciblée selon usage et version du code. Les flags dalvik.vm.bgdexopt.* contrôlent le déclenchement pour éviter des recompilations inutiles. Selon Android Developers Blog, certaines actions background ont donné jusqu’à dix-huit pour cent de gains sur le temps de compilation mesurable.
« Après l’intégration des scripts d’OTA, nos builds clients ont montré des démarrages plus constants et plus rapides. »
Sophie R.
La mise en place d’OTAs A/B permet de vérifier les améliorations sur un panel restreint avant déploiement global. Les seuils percent déclenchent la recompilation uniquement lorsque cela apporte une amélioration réelle. Automatiser ces étapes dans CI réduit la dette technique et l’impact visible pour l’utilisateur.
Optimisation opérationnelle : compilation background et réglages recommandés
Ce H3 propose des réglages opérationnels recommandés pour équilibrer latence et disponibilité CPU sur appareils en production. Activer speed-profile pour applications persistantes et allouer des threads cohérents apporte un bon rapport performance/empreinte. L’utilisation d’OTA A/B permet de vérifier les résultats avant un déploiement large.
« L’optimisation fine des flags a réduit nos temps de maintenance et amélioré la qualité perçue des apps. »
Jean P.
Prompt pour image de conclusion :
Source : Android Developers Blog, «18% Faster Compiles, 0% Compromises», Android Developers Blog, 2025 ; Android Open Source Project, «Configuring ART», Android Open Source Project, 2024 ; Wikipédia, «ART (Android)», Wikipédia, 2026.
