zipalign

zipalign es una herramienta de alineación de archivos que optimiza significativamente los archivos de aplicaciones para Android (APK). Tiene como objetivo garantizar que todos los datos sin comprimir comiencen con una alineación determinada en relación con el inicio del archivo. Específicamente, hace que todos los datos sin comprimir dentro del APK, como imágenes o archivos sin formato, se alineen en límites de 4 bytes. De esta manera, puedes acceder a todas las partes directamente con mmap(), incluso si contienen datos binarios con restricciones de alineación. El beneficio es una reducción en la cantidad de RAM que se consume al ejecutar la aplicación.

Esta herramienta debería usarse siempre para alinear tu archivo APK antes de distribuirlo a los usuarios finales. Las herramientas de compilación de Android pueden hacerlo por ti. Android Studio alinea automáticamente tu APK.

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 haya firmado 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 se haya firmado el archivo APK.

El ajuste se realiza 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 crear tu aplicación, lee Cómo firmar tu aplicación.

Uso

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

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

Para confirmar la alineación de existing.apk:

zipalign -c -v <alignment> existing.apk

<alignment> es un número entero que define los límites de alineación de bytes. Siempre debe ser 4 (que proporciona una alineación de 32 bits) o, de lo contrario, no resulta eficaz.

Marcas:

  • -f: Sobrescribe el archivo outfile.zip existente.
  • -v: Muestra un resultado detallado.
  • -p: outfile.zip debería usar la misma alineación de página para todos los archivos de objetos compartidos dentro de infile.zip.
  • -c: Confirma la alineación del archivo correspondiente.