La plateforme Android est l’une des plateformes qui disposent du plus de diversité en terme de terminaux mobiles. Améliorer l’efficacité de cette plateforme peut s’avérer bénéfique pour des millions d’utilisateurs. C’est dans ce but que les ingénieurs de Facebook ont mis sur pieds le projet Redex. Redex est un tunnel d’optimisation des fichiers « .dex » d’Android. Il a pour but d’appliquer une série de transformations personnalisables aux fichiers sources .dex afin de les optimiser avec leur insertion dans l’APK.
L’idée première lors de la mise sur pieds du projet redex était de situer les procédures d’optimisation entre la création des fichiers .dex et l’assemblage des fichiers .dex dans l’APK. L’avantage de cette approche est qu’elle offre une capacité maximale pour l’optimisation d’interclasses globales sur l’ensemble du binaire. Les ingénieurs de Facebook affirment avoir opté pour les travaux d’amélioration plutôt sur le dex bytecode que sur celui du Java bytecode à cause de certaines transformations qui ne peuvent être effectuées Post-Dxing.
Afin de permettre à d’autres ingénieurs d’optimiser le bytecode, les ingénieurs de Facebook ont souhaité mettre en place une architecture bénéfique pour tous. Pour ce faire ils ont organisé le tunnel d’optimisation en série de stages. Chaque stage pouvant ainsi être repensé et amélioré de manière unique. Cette approche offre au projet une certaine flexibilité permettant à plusieurs ingénieurs d’optimiser Redex et en parallèle. Le tunnel Redex a été conçu pour permettre tout type de transformation de fichiers .dex . Ci-dessous une liste (non exhaustive) des mécanismes mis en place.
- Réduction du bytecode
Il a consisté à optimiser les stages ajoutés au tunnel redex afin de réduire la taille des fichiers .dex
- Minification et compression
Généralement utilisé par les langages web (HTML, etc.) pour réduire les octets. Ce mécanisme consistera à remplacer les longues chaines de caractères par des plus courtes de réserve afin de réduire les octets dédiés aux chaines sans affecter la fonctionnalité de l’application.
- Élimination du code mort
Ce mécanisme quant à lui consiste a éliminé le code mort ou inaccessible accumulé dans le code source. Ce mécanisme à l’apparence facile nécessite une certaine attention quant aux classes et fonctions qui seront manipulées.
Source : blog Facebook
Et vous?
Que pensez-vous du projet Redex?
Voir aussi
Forum Facebook
la Rubrique Android ( Cours, Tutoriels, FAQ, etc.)