zipalign

zipalign is an archive alignment tool that provides important optimization to Android application(APK) files. The purpose is to ensure that all uncompressed data starts with a particular alignmentrelative to the start of the file. Specifically, it causes all uncompressed data within the APK,such as images or raw files, to be aligned on 4-byte boundaries. This allows all portions to beaccessed directly with mmap() even if they contain binary data with alignmentrestrictions. The benefit is a reduction in the amount of RAM consumed when running theapplication.

This tool should always be used to align your APK file before distributing it to end-users. TheAndroid build tools can handle this for you. Android Studio automatically aligns your APK.

Caution: You must use zipalign at one of two specific points in the app-building process, depending on which app-signing tool you use:

  • If you use apksigner, zipalign must only be performed before the APK file has been signed. If you sign your APK using apksigner and make further changes to the APK, its signature is invalidated.
  • If you use jarsigner, zipalign must only be performed after the APK file has been signed.

The adjustment is made by altering the size of the "extra" field in the zip Local File Header sections. Existing data in the "extra" fields may be altered by this process.

For more information about how to use zipalign when building your application, please read Signing Your Application.

Usage

To align infile.apk and save it as outfile.apk:

  1. zipalign [-f] [-v] <alignment> infile.apk outfile.apk

To confirm the alignment of existing.apk:

  1. zipalign -c -v <alignment> existing.apk

The <alignment> is an integer that defines the byte-alignment boundaries. This must always be 4 (which provides 32-bit alignment) or else it effectively does nothing.

Flags:

  • -f : overwrite existing outfile.zip
  • -v : verbose output
  • -p : outfile.zip should use the same page alignment for all shared object files within infile.zip
  • -c : confirm the alignment of the given file