zipalign

zipalign est un outil d'alignement d'archive ZIP. Il permet de s'assurer que tous les fichiers non compressés contenus dans les archives sont alignés par rapport au début du fichier. Vous pouvez ainsi accéder directement à ces fichiers via mmap(2) , ce qui vous évite de devoir copier ces données en mémoire RAM et réduit l'utilisation de la mémoire de votre application.

Utilisez zipalign pour optimiser votre fichier APK avant de le distribuer aux utilisateurs finaux. Si vous utilisez Android Studio, qui repose sur le plug-in Android Gradle, cette opération est automatique. Dans ce cas, vous devez tout de même utiliser zipalign pour vérifier que l'APK est aligné, mais vous n'avez pas besoin de l'aligner. Cette documentation est principalement destinée aux responsables de systèmes de compilation personnalisés.

Attention : Vous devez utiliser zipalign à un stade spécifique du processus de compilation. Ce stade dépend de l'outil de signature d'application que vous utilisez :

  • Avec apksigner, zipalign doit être utilisé avant la signature du fichier APK. Si vous signez votre fichier APK à l'aide d'apksigner puis le modifiez, sa signature n'est plus valide.
  • Avec jarsigner (non recommandé), zipalign doit être utilisé après la signature du fichier APK.

Pour assurer l'alignement, zipalign modifie la taille du champ "extra" dans les sections d'en-tête du fichier local. Ce processus peut également modifier les données existantes dans les champs "extra".

Utilisation

Si votre fichier APK contient des bibliothèques partagées (fichiers .so), utilisez -p pour vous assurer qu'elles sont alignées sur une limite de page de 4 Kio adaptée à mmap(2). Pour les autres fichiers dont l'alignement est déterminé par l'argument d'alignement obligatoire de zipalign, Studio s'aligne sur 4 octets sur les systèmes 32 et 64 bits.

Pour aligner infile.apk et l'enregistrer sous outfile.apk :

zipalign -p -f -v 4 infile.apk outfile.apk

Pour confirmer l'alignement d'existing.apk, utilisez la commande suivante. Si vous utilisez Android Studio ou AGP pour la compilation, cette commande vous permet de vérifier que votre fichier APK est aligné.

zipalign -c -v 4 existing.apk

Options

Le tableau suivant indique les options zipalign disponibles :

Option Description
-c Vérifie uniquement l'alignement (sans modification du fichier).
-f Écrase le fichier de sortie existant.
-h Affiche l'aide de l'outil.
-p Aligne les fichiers .so non compressés en fonction de la page.
-v Sortie détaillée.
-z Effectue une nouvelle compression à l'aide de Zopfli.