zipalign

zipalign es una herramienta de alineación de archivos ZIP que ayuda a garantizar que todos los archivos sin comprimir del archivo estén alineados con respecto a su inicio. Esto permite acceder a los archivos directamente a través de mmap(2) , lo que quita la necesidad de copiar estos datos en la memoria RAM y reducir el uso de memoria de tu app.

Usa zipalign para optimizar tu archivo APK antes de distribuirlo a los usuarios finales. Si compilas con Android Studio, que usa el complemento de Android para Gradle (AGP), esto se hace automáticamente. En este caso, deberías usar zipalign para verificar que el APK esté alineado, pero no necesitas alinearlo. Esta documentación es más que nada para quienes sigan usando los sistemas de compilación personalizados.

Precaución: Debes usar zipalign en un punto específico del proceso de compilación. Este depende de la herramienta de firma de apps que uses:

  • Si usas apksigner, debes usar zipalign antes de que se firme el archivo APK. Si firmas tu APK con apksigner y realizas más cambios en el APK, tu firma se invalida.
  • Si usas jarsigner (no recomendado), se debe usar zipalign después de que se firme el archivo APK.

Para lograr la alineación, zipalign altera el tamaño del campo "extra" en las secciones del encabezado de archivo local ZIP. Este proceso también puede modificar los datos existentes en los campos "extra".

Uso

Si tu APK contiene bibliotecas compartidas (archivos .so), usa el elemento -p para asegurarte de que estén alineados con un límite de tamaño de página de 4 KiB, adecuado para mmap(2). En el caso de otros archivos cuya alineación está determinada por el argumento de alineación obligatorio con zipalign, Android Studio se alinea con 4 bytes en sistemas de 32 y 64 bits.

Para alinear infile.apk y guardarlo como outfile.apk:

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

Para confirmar la alineación de existing.apk, usa el siguiente comando. Si usas Android Studio o AGP para compilar, este es el comando que debes usar para verificar que tu APK esté alineado.

zipalign -c -v 4 existing.apk

Opciones

En la siguiente tabla, se enumeran las opciones de zipalign disponibles:

Opción Descripción
-c Solo comprueba la alineación (no modifica el archivo).
-f Reemplaza el archivo de salida existente.
-h Muestra la ayuda de la herramienta.
-p Alinea archivos .so sin comprimir con la página.
-v Muestra un resultado detallado.
-z Vuelve a comprimir con Zopfli.