zipalign

El elemento zipalign es una herramienta de alineación de archivos ZIP. Garantiza que todos los documentos descomprimidos comiencen con una alineación relacionada con el comienzo del archivo. Esto permite acceder a esos 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.

El elemento zipalign debería usarse para optimizar tu archivo APK antes de distribuirlo a los usuarios finales. Si compilas con Android Studio, esto se hace automáticamente. Esta documentación es para quienes mantengan los sistemas de compilaciones personalizados.

Precaución: Debes usar zipalign en uno de los dos puntos específicos del proceso de compilación de apps, según la herramienta de firma de apps que utilices.

  • Si usas apksigner, zipalign solo debe realizarse antes de que se firme el archivo APK. Si firmas tu APK con un apksigner y realizas más cambios en el APK, tu firma se invalida.
  • Si usas jarsigner, zipalign solo debe realizarse después de que firme el archivo APK.

La alineación se logra mediante la modificación del tamaño del campo "extra" en las secciones del encabezado del archivo local ZIP. Este proceso puede cambiar los datos existentes en los campos "extra".

Para obtener más información sobre cómo usar zipalign al compilar tu aplicación, lee Cómo firmar tu aplicación.

Uso

Si tu APK contiene bibliotecas compartidas (archivos .so), debes usar el elemento -p a fin de 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, 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:

zipalign -c -v 4 existing.apk

Puedes usar zipalign -h para ver el conjunto completo de marcas compatibles.