Pourquoi Google maps ne fait que 48 Mégaoctets sous Android 4.4.4, mais 125M sous Android 5.1.1 ? Le téléphone Android 5.1.1 semble avoir un processeur 32 bits et le téléphone 4.4.4 semble avoir un processeur 64 bits d'après devicespecifications.com. J'aurais pensé que le téléphone 64 bits aurait le plus grand binaire.
Réponse
Trop de publicités?Si vous avez un accès Root, vous pouvez parcourir /data/app
et c'est là toute la différence.
\# Sample for Android K 4.4
com.android.vending-1.apk
com.google.android.apps.maps-1.apk
# Sample for Android L 5.0/5.1
com.android.vending-1/
com.google.android.apps.maps-1/
Et si tu énumères le contenu de l'un d'entre eux, tu verras que
com.google.android.apps.maps-1/:
base.apk (54MB)
lib/
com.google.android.apps.maps-1/lib/:
arm64/
com.google.android.apps.maps-1/lib/arm64/:
libcronet.59.0.3602.4.so (4.9MB)
libgmm-jni.so (9.4MB)
De plus, Android 4.4 met en œuvre l'ancienne VM Dalvik, tandis que sur Android 5+, Google a adopté une nouvelle VM appelée ART. La principale différence est que Dalvik compile les applications Just-In-Time (JIT), tandis qu'ART compile Ahead-Of-Time (AOT), donc plus de code est compilé dans ART que dans Dalvik. C'est pourquoi celui-ci est très grand :
/data/dalvik-cache/arm64/data@app@com.google.android.apps.maps-1@base.apk@classes.dex (109.5MB)
Sous Android 4.4, il est beaucoup plus petit, vous pouvez le constater par vous-même.
4 votes
La raison principale sera qu'Android 4.4 utilise Dalvik mais avec Android 5 et plus ART est utilisé, ce qui nécessite en moyenne environ 25 à 50 % d'espace supplémentaire pour le "code précompilé". Bien que la différence entre 48M et 125M semble dépasser cela - ce qui pourrait signifier que les différentes versions (soit en termes de "numéros de version", soit en termes de "variantes" dues aux différentes versions d'Android) sont un second critère.
0 votes
Les numéros de version indiqués dans les paramètres de l'application semblent être les mêmes. Existe-t-il un autre moyen de vérifier ?
0 votes
J'ai également découvert que je peux activer ART sur mon téléphone. J'ai essayé, mais rien ne semble changer. Ce que j'ai lu, c'est que cela ne fonctionne que pour le chipset snapdragon, mais je pense que mon téléphone a mediatek. Merci pour ces informations.
1 votes
@Izzy Deux raisons principales : 1. Sur un système 64 bits, certaines applications sont optimisées deux fois, générant un odex 32 bits et un odex 64 bits. 2. Toutes les librairies sont extraites sur Android L.