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:
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. |