33 votos

¿Por qué Android guarda los archivos APK de las aplicaciones instaladas?

Android guarda los archivos APK de las aplicaciones instaladas por el usuario en /data/app y las aplicaciones del sistema en /system/app directorio.

¿Significa que Android extrae los archivos dex de los archivos APK cada vez que se lanza la aplicación? Si no es así, ¿puedo eliminar con seguridad los archivos APK y seguir ejecutando la aplicación?

45voto

Guillermo Gomez Puntos 423

Un APK de Android suele contener estas cosas.

assets/
lib/
META-INF/
res/
AndroidManifest.xml
classes.dex

Tras la instalación, el archivo APK se copia en /data/app y classes.dex se extrae y se "optimiza" ejecutando dex2oat en él (en Android 5+ lib/ también se extrae). El resultado de la optimización se almacena en /data/dalvik-cache/ por lo que una aplicación debe ser optimizada sólo una vez por instalación o actualización . Todo lo demás se mantiene dentro del APK. Así que la primera respuesta es muy clara: cosas como assets y res que requiere la aplicación deben ser proporcionados, y están dentro del APK. El archivo APK se mantiene para fines de apoyo. Si elimina un APK, la aplicación definitivamente no arranca en absoluto. (App: ¿Dónde están mis activos?)

Segundo, Google Play Se ha añadido la compatibilidad con la "Actualización Delta". muy hace mucho tiempo . En el procedimiento de actualización delta, se calcula la diferencia entre el paquete antiguo y el nuevo. A continuación, GP descarga el "Delta" y aplica los cambios al APK original para obtener el APK actualizado, reduciendo así el tamaño de la descarga.

Un APK siempre está firmado. Esto puede evitar la modificación maliciosa del paquete. Definitivamente no querrás instalar una aplicación modificada sin saber qué ha cambiado, o si se ha inyectado un virus. El META-INF/ dentro del APK funciona para este propósito. Los cambios no oficiales harán que la firma no coincida, y el sistema Android se negará a instalar la aplicación modificada.

Además, cuando se actualiza el sistema operativo Android, todos los archivos dex se "optimizan" de nuevo para que no sea necesario volver a instalarlos uno por uno. Como se ha dicho anteriormente, la optimización requiere classes.dex del paquete original.

5 votos

Ten en cuenta que las capacidades de actualización delta de Google Play Store dependen de tener el APK para calcular el delta entre la versión instalada y la actualizada, y el posterior Parcheando. Además, el APK está comprimido por lo que ahorra algo de espacio (¿alguien se acuerda del antiguo ZipAlign?)

0 votos

@Tamoghna El espacio no es realmente un problema, de lo contrario Android 5+ no habría extraído lib/ del APK, iOS no habría extraído todo del IPA. Es sólo para la comprobación básica de la integridad.

0 votos

Los ejecutables rara vez se comprimen bien: el ahorro de espacio está más relacionado con los recursos comprimidos, como los archivos XML binarizados, que no se extraen. También, sobre ese ZipAlign - el acceso a los recursos puede ser algo más rápido en archivos comprimidos optimizados (leer alineados por palabras).

-2voto

Chenmunka Puntos 315

Los archivos apk se mantienen para si / cuando se actualiza el sistema Android en sí.

Parte del proceso de actualización consiste en desempaquetar y reoptimizar las aplicaciones a partir de los archivos apk. Esto ahorra la molestia de volver a descargar todas las aplicaciones que has instalado.

El desempaquetado no se produce cada vez que se ejecuta la aplicación.

Si borras los archivos apk, las aplicaciones pueden no funcionar. Si actualizas Android, perderás definitivamente las aplicaciones a menos que las descargues todas de nuevo.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X