33 votes

Pourquoi Android conserve-t-il les fichiers APK des applications installées ?

Android conserve les fichiers APK des applications installées par l'utilisateur dans le système. /data/app et les applications système dans /system/app répertoire.

Cela signifie-t-il qu'Android extrait les fichiers dex des fichiers APK chaque fois que l'application est lancée ? Si ce n'est pas le cas, puis-je supprimer les fichiers APK en toute sécurité et continuer à exécuter l'application ?

45voto

Guillermo Gomez Points 423

Un APK Android contient généralement ces éléments.

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

Lors de l'installation, le fichier APK est copié vers /data/app y classes.dex est extraite et "optimisée" en exécutant dex2oat sur elle (sur Android 5+ lib/ est également extraite). Le résultat de l'optimisation est stocké dans /data/dalvik-cache/ Une application doit donc être optimisée uniquement une fois par installation ou mise à jour . Tout le reste est conservé dans l'APK. La première réponse est donc très claire : les choses comme assets y res qui sont nécessaires à l'application doivent être fournis, et ils se trouvent dans l'APK. Le fichier APK est conservé à des fins de support. Si vous supprimez un APK, l'application définitivement ne démarre pas du tout. (App : Où sont mes avoirs ?)

Deuxièmement, Google Play ajout de la prise en charge de la "mise à jour Delta". très il y a longtemps . Dans la procédure de mise à jour delta, la différence entre l'ancien paquet et le nouveau paquet est calculée. Ensuite, GP télécharge le "Delta" et applique les modifications à l'APK original pour obtenir l'APK mis à jour, réduisant ainsi la taille du téléchargement.

Un APK est toujours signé. Cela peut empêcher toute modification malveillante du paquet. Vous ne voulez certainement pas installer une application modifiée sans savoir ce qui a été changé, ou si un virus a été injecté. Le site META-INF/ à l'intérieur de l'APK fonctionne à cet effet. Les modifications non officielles se traduiront par une signature non conforme, et le système Android refusera d'installer l'application moddée.

De plus, lorsque vous mettez à jour votre système d'exploitation Android, tous les fichiers dex sont à nouveau "optimisés" afin que vous n'ayez pas besoin de les réinstaller un par un. Comme il est dit ci-dessus, l'optimisation nécessite classes.dex de l'emballage d'origine.

5 votes

Notez que les capacités de mise à jour delta de Google Play Store dépendent de la présence de l'APK pour calculer le delta entre la version installée et la version mise à jour, et le Parcheando subséquent. De plus, l'APK est compressé, ce qui permet de gagner de l'espace (quelqu'un se souvient-il de l'ancien ZipAlign ?).

0 votes

@Tamoghna L'espace n'est pas vraiment un problème, sinon Android 5+ n'aurait pas été extrait. lib/ de l'APK, iOS n'aurait pas tout extrait de l'IPA. C'est juste pour un contrôle d'intégrité de base.

0 votes

Les exécutables sont rarement bien compressés - le gain d'espace est davantage lié aux ressources compressées comme les fichiers XML binarisés, qui ne sont pas extraits. Par ailleurs, à propos de ZipAlign, l'accès aux ressources peut être un peu plus rapide sur les fichiers compressés optimisés (alignement des mots).

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X