J'ai quelques questions concernant fichiers dex
dex
sous Android?J'ai besoin d'informations spécifiques s'il vous plaît aider à ce sujet et tous les exemples réels sont les bienvenus!
À propos du fichier .dex:
L'une des caractéristiques les plus remarquables du Dalvik Virtual Machine
(le bricoleur sous le système Android est _) est qu'il 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 Java bytecode.
Compiled 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. Les 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. String 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 dispose d'une documentation sur les fichiers Dalvik Executable Format
(. Dex ). Vous pouvez en savoir plus sur la documentation officielle: Format de fichier Dex
Les fichiers .dex
sont similaires aux fichiers Java de la classe, mais ils ont été exécutés sous la machine virtuelle Dalkvik (DVM) sur les anciennes versions Android et compilés au moment de l'installation sur le périphérique. vers le code natif avec ART sur les versions plus récentes Android.
Vous pouvez decompile
.dex à l'aide de l'outil dexdump
fourni avec Android-sdk.
Il existe également quelques techniques d'ingénierie inverse pour créer un jar file
ou Java class file
à partir d'un fichier .dex
.
.dex file
Fichier de code d'application compilé Android.
Les programmes Android sont compilés dans des fichiers .dex (Dalvik Executable), qui sont à leur tour compressés dans un fichier .apk unique 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.
Le 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 l'une est Dalvik Executable (DEX).
Le code source Java est compilé par le compilateur Java dans des fichiers .class
. Ensuite, l'outil dx
(dexer), qui fait partie du Android SDK, traite les fichiers .class
dans un format de fichier appelé DEX
contenant le code en octets 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 de la machine virtuelle Java aux fichiers traités par l’outil dex
.
Le tableau compare les tailles de code des bibliothèques système, des applications de navigateur Web et d'une application générique (application de réveil). Dans tous les cas, l'outil dex a réduit la taille du code de plus de 50%.
Dans les environnements standard Java, chaque classe du code Java donne un fichier .class
. Cela signifie que si le fichier de code source Java a 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
.
La compilation est la même sur la plate-forme Android, ce qui donne plusieurs fichiers .class
. Toutefois, une fois les fichiers .class
générés, l’outil "dx" est utilisé pour convertir tous les fichiers .class
en un seul fichier .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 sa conception repose principalement sur le partage de données.