zipalign
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
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. |
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-07-27 (UTC)"],[],[],null,["# zipalign\n\n`zipalign` is a zip archive alignment tool that helps ensure that all uncompressed files\nin the archive\nare aligned relative to the start of the file. This lets the files be accessed directly via\n[mmap(2)](https://man7.org/linux/man-pages/man2/mmap.2.html)`\n`, removing the need to copy this data in RAM and reducing your app's memory usage.\n\nUse `zipalign` to optimize your APK file before distributing it to\nend users. If you build using Android Studio, which uses the Android Gradle plugin (AGP), this is\ndone automatically. In this case, you should still use `zipalign` to verify that the APK\nis aligned, but you don't need to align it. This documentation is mainly for maintainers of\ncustom build systems. \n\n**Caution:** You must use `zipalign` at a specific point in\nthe build process. That point depends on which app-signing tool you use:\n\n- If you use [apksigner](/studio/command-line/apksigner), `zipalign` must be used **before** the APK file has been signed. If you sign your APK using `apksigner` and make further changes to the APK, its signature is invalidated.\n- If you use [jarsigner](//docs.oracle.com/javase/tutorial/deployment/jar/signing.html) (not recommended), `zipalign` must be used **after** the APK file has been signed.\n\nTo achieve alignment, `zipalign` alters the size of the `\"extra\"` field in the zip **Local File Header**\nsections. This process can also alter existing data in the `\"extra\"` fields.\n\nUsage\n-----\n\nIf your APK contains shared libraries (`.so` files), use `-P 16`\nto ensure that they're aligned to a 16KiB page boundary suitable for `mmap(2)`\nin both 16KiB and 4KiB devices. For other files, whose alignment is determined by the\nmandatory alignment argument to `zipalign`, should be aligned to 4 bytes\non both 32-bit and 64-bit systems.\n\nTo align `infile.apk` and save it as `outfile.apk`: \n\n```\nzipalign -P 16 -f -v 4 infile.apk outfile.apk\n```\n\nTo confirm the alignment of `existing.apk`, use the following command. \n\n```\nzipalign -c -P 16 -v 4 existing.apk\n```\n\n### Options\n\nThe following table lists the available `zipalign` options:\n\n| Option | Description |\n|--------------------|-------------------------------------------------------------------------------------------------------------------------|\n| -c | Checks alignment only (does not modify file). |\n| -f | Overwrites existing output file. |\n| -h | Displays tool help. |\n| -P \\\u003cpagesize_kb\\\u003e | aligns uncompressed `.so` files to the specified page size in KiB. Valid options for `\u003cpagesize_kb\u003e` are 4, 16, and 64. |\n| -p | 4KiB page-aligns uncompressed `.so` files. It is recommended to use `-P 16` instead, as `-p` is deprecated. |\n| -v | Verbose output. |\n| -z | Recompresses using Zopfli. |"]]