¿Con qué frecuencia Android tiene que descomprimir los archivos APK y OBB de una aplicación?

De acuerdo con una de las excelentes respuestas a esta pregunta , Android tiene que descomprimir los archivos APK y OBB de cada aplicación antes de poder ejecutar la aplicación.

¿Se realiza esta descompresión cada vez que se ejecuta una aplicación, suponiendo que se haya eliminado del caché de procesos de Android?

ejecute adb logcat -v longy cuando su teléfono se inicie, después de que la imagen de inicio desaparezca y aparezca la pantalla de inicio, o justo antes de eso ... verá un montón de información muy rápida que todos tienen tipos de archivos de sonido como este o cualquier tipo de vorbis/obbdatos siendo descomprimido. Probablemente dure alrededor de un minuto, tal vez menos.

Respuestas (1)

Si y no. Las aplicaciones de Android no se descomprimen en el sistema de archivos cuando es necesario ejecutarlas. En su lugar, la máquina virtual Dalvik los descomprime selectivamente y los lee en la memoria/ram . Esta descompresión es un proceso muy simple, rápido y que no requiere un uso intensivo del procesador, por lo que no agrega ninguna sobrecarga real al sistema. En la primera instalación, Dalvik VM realiza cierta optimización, principalmente vinculando bibliotecas nativas en el sistema Android a las bibliotecas APK internas, y esto se guarda en la memoria caché de Dalvik como un archivo dex optimizado (.odex)

[Nota al margen, esta es la razón por la cual el primer arranque de un teléfono lleva más tiempo, ya que el sistema tiene que crear archivos odex para cualquier aplicación que no tenga un archivo odex. Las aplicaciones del sistema generalmente están hechas para tener un odex por parte del fabricante]

Un APK tiene una estructura predefinida, que incluye listas de archivos, recursos, activos, bibliotecas, dex (archivos de clase Java convertidos en formato ejecutable Dalvik), etc. El sistema descomprime y lee estos archivos en la memoria, y sigue el código interno. Ese código le dice cuándo descomprimir y cargar los otros archivos.

Nunca llega al disco duro, va directo a la memoria.

Es posible que desee agregar información aquí sobre cualquier cambio que ART incorporó a esto.
No estoy seguro de que ART realice cambios en esto. Tal vez la parte de odex, pero el apk general sigue siendo el mismo.
Uso un escritorio antiguo que no es compatible con el kit de desarrollo de Android, por lo que no tengo la información. Sé que Dalvik hizo una compilación JIT de cosas, mientras que ART precompila el código de bytes de la VM en instrucciones nativas prácticamente en la instalación y en el reinicio si es necesario. Sin embargo, si eso va al archivo .odex o no, no estoy seguro.