Estaba investigando un par de archivos de lápidas de Android de un viejo teléfono Samsung con Marshmallow. Encontré un accidente en cada uno con el mismo culpable, dex2oat
.
Desde mi comprensión limitada, es un compilador que toma argumentos de Android Runtime y convierte dex
archivos a oat
formatos optimizados para Android.
Me encontré con el mismo problema incluso si reiniciaba de fábrica o congelaba muchas aplicaciones. Tengo este dispositivo rooteado y decidí dar un paso arriesgado. Primero hice una copia de seguridad y eliminé dex2oat
de /system/bin
. Luego reinicié el sistema con riesgo de bloquearlo.
Hasta ahora está funcionando bien.
Debido a mi falta de comprensión, no sé cuán crucial es esto dex2oat
para la estabilidad del sistema y quiero saber cuál es el impacto en él.
Runtime 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 código de bytes Dalvik Executable (DEX) (desde apk
archivos) en una máquina virtual. Al igual que otros entornos de ejecución, ART puede ejecutar el código en tres modos diferentes:
Para mejorar el rendimiento, los compiladores JIT y AOT traducen el código de bytes DEX (durante o antes de la ejecución, respectivamente) al lenguaje de máquina nativo. El compilador JIT era parte de DVM, agregado a ART en Android 7. Desde entonces, el compilador AOT también es compatible con la compilación en segundo plano guiada por perfiles. Los perfiles de aplicaciones se crean durante las ejecuciones compiladas JIT.
Si bien el intérprete es parte de las bibliotecas ART, dex2oat
la herramienta se usa como compilador JIT y AOT. La documentación dice:
En el momento de la instalación, ART compila las aplicaciones mediante la herramienta dex2oat del dispositivo . Esta utilidad acepta archivos DEX como entrada y genera un ejecutable de aplicación compilado para el dispositivo de destino.
Y aquí :
JIT y AOT usan el mismo compilador con un conjunto similar de optimizaciones
En su Marshmallow ROM, la compilación AOT no funcionará en ausencia de dex2oat
la cual puede afectar negativamente el rendimiento de las aplicaciones. Además, el installd
servicio nativo y PackageManager
el servicio de Java dependen dex2oat
durante la instalación de la aplicación o la actualización del perfil de las aplicaciones instaladas previamente. Por lo tanto, pueden romperse debido a la falta de un archivo.
Para resumir, installd
los dex2oat
bloqueos son errores graves en su ROM que deben corregirse. La eliminación de dex2oat
binarios no es una solución, sino una solución alternativa que es muy probable que falle.
RELACIONADO:
Irfan Latif
dex
modo intérprete o compilador JIT. Por lo tanto, la compilación AOT no es necesariamente necesaria, pero puede afectar el rendimiento. Además, los procesos (comoinstalld
) relacionados condex2oat
el binario pueden fallar si falta el binario, por ejemplo, en una nueva instalación de aplicación o en la actualización del perfil de aplicaciones instaladas anteriormente.