android - engineering - dex2jar
¿Qué son los archivos.dex en Android? (4)
Tengo algunas preguntas con respecto a los archivos dex
- ¿Qué es un archivo
dex
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 java?
Necesito información específica. ¡Por favor ayuda con esto y cualquier ejemplo real es bienvenido!
El archivo de clase aquí contiene el código de bytes Oracle JVM estándar.
• DALVIK BYTECODE
[ARCHIVO DE CLASES JAVA]> [ARCHIVO DE CLASES DEX]
Dado que, el archivo java .class contiene el código de byte JVM estándar. Pero los dispositivos Android no usan este formato de código de bytes. En cambio, Android tiene su propio formato de código de bytes llamado Dalvik. Los códigos de bytes Dalvik, como los códigos de bytes Oracle JVM, son instrucciones de código máquina para un procesador teórico.
El proceso de compilación necesita convertir los archivos .class y cualquier biblioteca .jar en un único archivo classesx que contenga códigos de bytes Dalvik. El comando dx une todos los archivos .class y .jar en un solo archivo classes.dex escrito en formato de código de bytes Dalvik.
Ahora, esta conversión de archivos .class y .jar en archivos .dex se llama compilación Dex y los archivos así obtenidos se denominan archivos Dex.
dex
archivo dex
es un archivo que se ejecuta en la VM Dalvik.
Dalvik VM incluye varias funciones para la optimización, verificación y monitoreo del rendimiento, una de las cuales es Dalvik Executable (DEX) .
El compilador de Java compila el código fuente de Java en archivos .class
. Luego, la herramienta dx
(dexer), parte del Android SDK, procesa los archivos .class
en un formato de archivo llamado DEX
que contiene el código de bytes Dalvik. La herramienta dx
elimina toda la información redundante que está presente en las clases. En DEX
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 por la herramienta dex
.
La tabla compara los tamaños de código para las bibliotecas del sistema, las aplicaciones del navegador web y una aplicación de propósito general (aplicación de reloj de alarma). 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 archivo .class
. Eso significa que, si el archivo de código fuente de 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 archivos .class
.
El paso de compilación es el mismo en la plataforma Android, lo que resulta en múltiples archivos .class
. Pero después de que se generan los archivos .class
, la herramienta "dx" se usa para convertir todos los archivos .class
en un único .dex
o archivo ejecutable Dalvik. Es el archivo .dex
que se ejecuta en la VM Dalvik. El archivo .dex
se ha optimizado para el uso de la memoria y el diseño se .dex
principalmente en el intercambio de datos.
Acerca del archivo .dex:
Una de las características más notables de la Dalvik Virtual Machine
(el caballo de batalla bajo el sistema Android) es que no utiliza bytecode de Java. En su lugar, se introdujo un formato interno denominado DEX y ni siquiera las instrucciones de bytecode son las mismas que las instrucciones de bytecode de Java.
Compiled Android application code file.
Los programas de Android se compilan en .dex
(ejecutable Dalvik), que a su vez se comprimen en un solo archivo .apk
en el dispositivo. .dex
archivos .dex
se pueden crear traduciendo automáticamente las aplicaciones compiladas escritas en el lenguaje de programación Java.
Formato de archivo 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 tiene documentación sobre el Dalvik Executable Format
(archivos .dex ). Puede encontrar más información en los documentos oficiales: formato de archivo Dex
.dex
archivos .dex
son similares a los archivos de clase java, pero se ejecutaron bajo el Dalkvik Virtual (DVM) en versiones anteriores de Android, y se compilaron en el momento de la instalación en el dispositivo con el código nativo con ART en las versiones más nuevas de Android.
Puede decompile
.dex usando la herramienta dexdump
que se proporciona en android-sdk.
También hay algunas técnicas de ingeniería inversa para crear un jar file
o un jar file
java class file
de un archivo .dex
.
.dex file
Archivo de código de la aplicación compilada de Android.
Los programas de Android se compilan en archivos .dex (ejecutable Dalvik), que a su vez se comprimen en un solo archivo .apk en el dispositivo. Los archivos .dex pueden ser creados automáticamente por Android, traduciendo las aplicaciones compiladas escritas en el lenguaje de programación Java.