J’ai des questions concernant les fichiers dex
dex
dans Android? J’ai besoin d’informations spécifiques, aidez-moi s’il vous plaît, et tous les exemples réels sont les bienvenus!
À propos du fichier .dex:
L’une des fonctionnalités les plus remarquables de la Dalvik Virtual Machine
(le cheval de bataille du système Android) est qu’elle n’utilise pas le bytecode Java. Au lieu de cela, un format interne appelé DEX a été introduit et même les instructions de bytecode ne sont pas identiques aux instructions de bytecode Java.
Comstackd Android application code file.
Les programmes Android sont compilés dans des fichiers .dex
(Dalvik Executable), qui sont à leur tour compressés dans un seul fichier .apk
sur le périphérique. .dex
fichiers .dex
peuvent être créés en traduisant automatiquement les applications compilées écrites dans le langage de programmation Java.
Format de fichier Dex:
1. File Header 2. Ssortingng Table 3. Class List 4. Field Table 5. Method Table 6. Class Definition Table 7. Field List 8. Method List 9. Code Header 10. Local Variable List
Android possède une documentation sur le Dalvik Executable Format
(fichiers .dex ). Vous pouvez en savoir plus sur les documents officiels: Dex File Format
.dex
fichiers .dex
sont similaires aux fichiers de classe java, mais ils étaient exécutés sous Dalkvik Virtual (DVM) sur les anciennes versions d’Android et compilés au moment de l’installation sur le périphérique en code natif avec ART sur les nouvelles versions d’Android.
Vous pouvez decomstack
.dex à l’aide de l’outil dexdump
fourni dans android-sdk.
Il existe également des techniques de reverse engineering pour créer un jar file
ou un jar file
java class file
partir d’un fichier .dex
.
.dex file
Fichier de code d’application Android compilé.
Les programmes Android sont compilés dans des fichiers .dex (Dalvik Executable), qui sont à leur tour compressés dans un seul fichier .apk sur le périphérique. Les fichiers .dex peuvent être créés automatiquement par Android en traduisant les applications compilées écrites dans le langage de programmation Java.
dex
fichier dex
est un fichier exécuté sur la machine virtuelle Dalvik.
Dalvik VM inclut plusieurs fonctionnalités d’optimisation, de vérification et de surveillance des performances, dont Dalvik Executable (DEX) .
Le code source Java est compilé par le compilateur Java dans des fichiers .class
. Ensuite, l’outil dx
(dexer), une partie du SDK Android, traite les fichiers .class
dans un format de fichier appelé DEX
contenant le code d’octet Dalvik. L’outil dx
élimine toutes les informations redondantes présentes dans les classes. Dans DEX
toutes les classes de l’application sont regroupées dans un seul fichier. Le tableau suivant compare les tailles de code des fichiers JAR JVM et les fichiers traités par l’outil dex
.
Le tableau compare les tailles de code pour les bibliothèques système, les applications de navigateur Web et une application à usage général (application réveil). Dans tous les cas, l’outil dex réduit la taille du code de plus de 50%.
Dans les environnements Java standard, chaque classe du code Java génère un fichier .class
. Cela signifie que si le fichier de code source Java possède une classe publique et deux classes anonymes, par exemple pour la gestion des événements, le compilateur Java créera un total de trois fichiers .class
.
L’étape de compilation est la même sur la plate-forme Android, ce qui entraîne plusieurs fichiers .class
. Mais après la génération des fichiers .class
, l’outil «dx» est utilisé pour convertir tous les fichiers .class
en un seul .dex
ou Dalvik Executable. C’est le fichier .dex
qui est exécuté sur la machine virtuelle Dalvik. Le fichier .dex
a été optimisé pour l’utilisation de la mémoire et la conception repose principalement sur le partage de données.
Le fichier de classe contient ici le code d’octet Oracle JVM standard.
• DALVIK BYTECODE
[FICHIER DE CLASSE JAVA]> [FICHIER DE CLASSE DEX]
Depuis, le fichier java .class contient le code d’octet JVM standard. Mais les appareils Android n’utilisent pas ce format de code octet. Au lieu de cela, Android a son propre format de code octet distinct appelé Dalvik. Les codes d’octets Dalvik, comme les codes d’octets JVM Oracle, sont des instructions de code machine pour un processeur théorique.
Le processus de compilation doit convertir les fichiers .class et les bibliothèques .jar en un seul fichier classes.dex contenant des codes-octets Dalvik. La commande dx relie tous les fichiers .class et .jar dans un seul fichier classes.dex écrit au format de code octet Dalvik.
Maintenant, cette conversion des fichiers .class et .jar en fichiers .dex s’appelle Dex Compilation et les fichiers ainsi obtenus sont appelés fichiers Dex.