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