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é /data/app
et classes.dex
est extrait et "optimisé" en s'exécutant dex2oat
dessus (sur Android 5+ lib/
est également extrait). Le résultat de l'optimisation est stocké dans /data/dalvik-cache/
une application ne doit donc être optimisée qu'une seule fois par installation ou mise à jour . Tout le reste est conservé dans l'APK. Donc, la première réponse est très claire: des choses comme assets
et ce res
qui est requis par l'application doivent être fournies, et elles sont à l'intérieur de l'APK. Le fichier APK est conservé à des fins d'assistance. Si vous supprimez un APK, l'application ne démarrera certainement pas du tout. (Application: où sont mes actifs?)
Deuxièmement, Google Play a ajouté la prise en charge de "Delta Update" il y a très longtemps . Dans la procédure de mise à jour delta, la différence entre l'ancien package et le nouveau package est calculée. Ensuite, GP télécharge le "Delta" et applique les modifications à l'APK d'origine pour produire l'APK mis à jour, réduisant ainsi la taille du téléchargement.
Un APK est toujours signé. Cela peut empêcher une modification malveillante du package. Vous ne voulez certainement pas installer une application modifiée sans savoir ce qui a changé ou si un virus a été injecté. L' META-INF/
intérieur de l'APK fonctionne à cet effet. Les modifications non officielles entraîneront une signature non correspondante et le système Android refusera d'installer l'application modifié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 indiqué ci-dessus, l'optimisation nécessite un classes.dex
fichier du package d'origine.
lib/
d'APK, iOS n'aurait pas tout extrait d'IPA. C'est juste pour le contrôle d'intégrité de base.