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 el APK contiene bibliotecas compartidas (.so
archivos), usa -P 16
.
para asegurarte de que estén alineados con un límite de página de 16 KiB adecuado para mmap(2)
.
en dispositivos de 16 KiB y 4 KiB. Para otros archivos cuya alineación está determinada por el
El argumento de alineación obligatorio para zipalign
debe alinearse con 4 bytes.
en sistemas de 32 y 64 bits.
Para alinear infile.apk
y guardarlo como outfile.apk
:
zipalign -P 16 -f -v 4 infile.apk outfile.apk
Para confirmar la alineación de existing.apk
, usa el siguiente comando.
zipalign -c -P 16 -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 <pagesize_kb>. | alinea los archivos .so sin comprimir con el tamaño de página especificado en KiB. Opciones válidas
para <pagesize_kb> son 4, 16 y 64. |
-p | 4 KiB alinea la página de archivos .so sin comprimir. Se recomienda usar
-P 16 en su lugar, ya que -p dejó de estar disponible. |
-v | Muestra un resultado detallado. |
-z | Vuelve a comprimir con Zopfli. |