J'ai découvert que lorsque je zippe l'apk avec ultra level zip compressor, la taille du fichier est effectivement réduite. Pourquoi le développeur n'a pas laissé sortir cette version compressée comme js.minify ? Comment convertir ces fichiers apk en fichiers apk ultra zip ?
Réponse
Trop de publicités?Les fichiers APK ne sont généralement compressés qu'en utilisant le paramètre de compression "rapide" ((dé)compression la plus rapide, seul un petit espace est gagné par la compression). Pour autant que je sache, c'est pour des raisons historiques.
Les premiers appareils Android étaient assez lents et le temps d'installation des applications était déjà très long. Je suppose donc que Google a décidé de construire tous les outils de développement d'Android de manière à ce que la compression soit axée sur la vitesse maximale et non sur la taille minimale des APK. Comme Google n'a pas vraiment à se soucier de la taille du stockage en nuage ou de la bande passante du trafic réseau, c'était la meilleure solution.
C'est pourquoi la plupart des outils de construction Android n'utilisent encore que la compression rapide.
Les fichiers APK modernes, par exemple ceux générés par Google, utilisent une compression plus importante, de sorte que le gain ne devrait plus être aussi élevé. Mais cela dépend de l'application et de la personne qui vous a fourni le fichier APK.
De plus, il existe certaines options APK qui imposent que toutes les bibliothèques natives ( .so
) doivent rester non chiffrés, si l'application déclare android:extractNativeLibs="false
. En effet, les bibliothèques natives ne sont pas extraites du fichier APK, elles sont directement utilisées dans le fichier APK, ce qui signifie que vous ne devez l'enregistrer qu'une seule fois sur votre appareil au lieu de deux (une fois compressé dans l'APK, une fois extrait).
Il existe des articles qui décrivent comment recompresser un fichier APK. Sachez que ces articles sont très anciens et ne fonctionnent plus avec les fiels APK et les appareils récents. Ceci est dû au fait que l'APK signature v2 et v3 qui ne signent pas seulement le contenu décompressé du fichier APK (comme le faisait la v1) mais signent le fichier APK dans son ensemble. Ainsi, toute modification du fichier APK, même si elle n'affecte pas le contenu (comme l'ajout d'un commentaire ZIP), détruira la signature APK v2/v3 contenue. Comme la signature v1 contient l'information qu'il existe une signature v2, tous les appareils capables de vérifier une signature v2 rejetteront également un tel fichier APK modifié.
Conclusion : Sur certains fichiers APK, vous pourriez gagner de l'espace supplémentaire en les recompressant mais dans presque tous les cas, cela détruira aujourd'hui la signature de l'APK et ce n'est donc pas vraiment une option.