Tengo algunas preguntas sobre los archivos dex
- ¿Qué es un
dex
archivo en Android? - ¿Cómo funciona dex para Android?
- ¿Cómo se usan para depurar una aplicación de Android?
- ¿Son similares a los archivos de clase de Java?
Necesito información específica, por favor ayuda en esto y cualquier ejemplo real es bienvenido.
Respuestas:
Sobre el archivo .dex:
Una de las características más notables de
Dalvik Virtual Machine
(el caballo de batalla bajo el sistema Android) es que no utiliza el código de bytes de Java. En cambio, se introdujo un formato local llamado DEX y ni siquiera las instrucciones de bytecode son las mismas que las de Java.Los programas de Android se compilan en
.dex
archivos (Dalvik Executable), que a su vez se comprimen en un solo.apk
archivo en el dispositivo..dex
Los archivos se pueden crear traduciendo automáticamente las aplicaciones compiladas escritas en el lenguaje de programación Java.Formato de archivo Dex:
Android tiene documentación sobre los
Dalvik Executable Format
( archivos .dex ). Puede encontrar más información en los documentos oficiales: Formato de archivo Dex.dex
los archivos son similares a los archivos de clase java, pero se ejecutaron bajo la máquina virtual Dalkvik (DVM) en versiones anteriores de Android, y se compilaron en el momento de la instalación en el dispositivo con código nativo con ART en las versiones más recientes de Android.Puede
decompile
.dex utilizando ladexdump
herramienta que se proporciona en android-sdk.También hay algunas técnicas de ingeniería inversa para hacer un
jar file
ojava class file
desde un.dex
archivo.fuente
dexdump
no es un descompilador sino un desensambladorArchivo compilado de código de aplicación de Android.
Los programas de Android se compilan en archivos .dex (Dalvik Executable), que a su vez se comprimen en un solo archivo .apk en el dispositivo. Android puede crear automáticamente archivos .dex traduciendo las aplicaciones compiladas escritas en el lenguaje de programación Java.
fuente
dex
El archivo es un archivo que se ejecuta en la máquina virtual Dalvik.Dalvik VM incluye varias funciones para la optimización, verificación y supervisión del rendimiento, una de las cuales es Dalvik Executable (DEX) .
El compilador de Java compila el código fuente de Java en
.class
archivos. Luego, ladx
herramienta (dexer), parte del SDK de Android, procesa los.class
archivos en un formato de archivo llamadoDEX
que contiene el código de bytes Dalvik. Ladx
herramienta elimina toda la información redundante que está presente en las clases. EnDEX
todas las clases de la aplicación se empaquetan en un solo archivo. La siguiente tabla proporciona una comparación entre los tamaños de código para los archivos jar JVM y los archivos procesados pordex
herramienta.La tabla compara los tamaños de código para las bibliotecas del sistema, las aplicaciones del navegador web y una aplicación de uso general (aplicación de despertador). En todos los casos, la herramienta dex redujo el tamaño del código en más del 50%.
En entornos Java estándar, cada clase en código Java da como resultado un
.class
archivo. Eso significa que si el archivo de código fuente Java tiene una clase pública y dos clases anónimas, digamos para el manejo de eventos, entonces el compilador de Java creará un total de tres.class
archivos.El paso de compilación es el mismo en la plataforma Android, lo que resulta en múltiples
.class
archivos. Pero después de.class
que se generan los archivos, la herramienta "dx" se usa para convertir todos los.class
archivos en un solo.dex
archivo, o Dalvik Executable. Es el.dex
archivo que se ejecuta en la máquina virtual Dalvik. El.dex
archivo se ha optimizado para el uso de memoria y el diseño se basa principalmente en el intercambio de datos.fuente