¿Que es un archivo .dex? ¿Qué es el dexopt? ¿Qué es el odex? ¿Qué es el dexoat? ¿Qué es el ELF? ¿Como funciona todo esto?

Intentaré ser lo más breve posible

  1. Todo el código de Java en su proyecto de Android es compilado en archivos .class por el compilador de Java.
  2. La herramienta dex (dx) convierte todos sus. archivos de clase en archivos .dex (código de byte Dalvik) para que puedan empaquetarse en archivos .apk.
  3. Antes de que llegara Android 5.0 (Lollipop), el sistema Android usaba una herramienta llamada dexopt que se usaba para optimizar los archivos .dex y producir un archivo .odex que era similar a los archivos .dex originales, excepto que usaba algunos códigos de operación optimizados.
  4. Dalvik ejecuta los archivos .odex y .dex. Dalvik también utiliza la compilación JIT (justo a tiempo) que se introdujo en Android 2.2 “Froyo” para compilar las partes de código ejecutadas con frecuencia en el código de máquina nativo que mejoró el rendimiento.
  5. Desde Android 5.0 “Lollipop”, el sistema Android utiliza una herramienta llamada dex2oat que convierte los archivos .dex en archivos ELF que se pueden ejecutar de forma nativa . Entonces, en lugar de tener un código de bytes interpretado por una máquina virtual, ahora tiene un código nativo que el procesador puede ejecutar de forma nativa. Esto se llama compilación AOT (por adelantado) .

Estos diagramas le ayudarán a comprender mejor los conceptos.

Para obtener información detallada, siga estos enlaces

Proyecto de código abierto de Android

Descripción general del sistema de construcción

Dalvik (software)

Puedes comentar si quieres preguntar algo más. Espero que haya ayudado 🙂