El tiempo de ejecución es un entorno en el que se ejecutan programas escritos en un lenguaje específico. Android Runtime (ART) es un tiempo de ejecución similar a Java que ejecuta el bytecode ejecutable de Dalvik (DEX) (desde archivos apk
) en una Máquina Virtual. Al igual que otros entornos de ejecución, ART puede ejecutar el código en tres modos diferentes:
- Interpretación
- Compilación Just-in-Time (JIT)
- Compilación Ahead of Time (AOT)
Para mejorar el rendimiento, los compiladores JIT y AOT traducen el bytecode DEX (durante o antes de la ejecución, respectivamente) a lenguaje máquina nativo. El compilador JIT formaba parte de DVM, y fue agregado nuevamente a ART en Android 7. Desde entonces, el compilador AOT también admite la compilación en segundo plano guiada por perfiles. Se crean perfiles de aplicaciones durante las ejecuciones compiladas por JIT.
Mientras que el intérprete forma parte de las bibliotecas de ART, la herramienta dex2oat
se utiliza como compilador JIT y AOT. La documentación afirma:
En el momento de la instalación, ART compila aplicaciones utilizando la herramienta dex2oat en el dispositivo. Esta utilidad acepta archivos DEX como entrada y genera un ejecutable de aplicación compilado para el dispositivo de destino.
Y aquí:
Tanto JIT como AOT utilizan el mismo compilador con un conjunto similar de optimizaciones
En tu ROM Marshmallow, la compilación AOT no funcionará en ausencia de dex2oat
, lo que puede afectar negativamente el rendimiento de las aplicaciones. Además, el servicio nativo installd
y el servicio Java PackageManager
dependen de dex2oat
durante la instalación de la aplicación o la actualización del perfil de aplicaciones previamente instaladas. Por lo tanto, podrían dejar de funcionar debido a la falta del archivo.
En resumen, los errores de installd
o dex2oat
son problemas graves en tu ROM que deben solucionarse. Eliminar el binario dex2oat
no es una solución, sino una solución temporal que muy probablemente fallará.
RELACIONADO:
1 votos
ART también se ejecuta en modos de intérprete
dex
o compilador JIT. Por lo tanto, la compilación AOT no es necesariamente requerida pero puede afectar el rendimiento. Además, los procesos (comoinstalld
) involucrados con el binariodex2oat
pueden fallar si el binario está ausente, por ejemplo, en una nueva instalación de aplicación o en una actualización de perfil de aplicaciones previamente instaladas.