web-dev-qa-db-fra.com

Que sont les fichiers .dex dans Android?

J'ai quelques questions concernant fichiers dex

  • Qu'est-ce qu'un fichier dex sous Android?
  • Comment fonctionne Dex pour Android?
  • Comment sont-ils utilisés pour déboguer une application Android?
  • Sont-ils similaires aux fichiers de classe Java?

J'ai besoin d'informations spécifiques s'il vous plaît aider à ce sujet et tous les exemples réels sont les bienvenus!

172
Nikunj Patel

À 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.

202
user370305
.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.

88
Vineet Shukla

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%.

enter image description here

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.

79
Sufiyan Ghori