zipalign
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
O zipalign
é uma ferramenta de alinhamento de arquivo ZIP que ajuda a garantir que todos os arquivos não compactados
estejam alinhados
em relação ao início do arquivo. Isso permite que os arquivos sejam acessados diretamente por
mmap(2)
, eliminando a necessidade de copiar esses dados na RAM e reduzindo o uso da memória do app.
Use o zipalign
para otimizar o arquivo APK antes de fazer a distribuição dele aos
usuários finais. Se você criar o APK usando o Android Studio, que utiliza o Plug-in do Android para Gradle (AGP, na sigla em inglês), a otimização vai ser
feita automaticamente. Nesse caso, você ainda precisa usar o zipalign
para verificar se o APK
está alinhado, mas não é necessário fazer o alinhamento dele. Esta documentação é destinada principalmente a administradores de
sistemas de build personalizados.
Cuidado: é preciso usar o zipalign
em um ponto específico
do processo de build. Isso depende da ferramenta de assinatura de apps que você usa:
-
Se você usar
apksigner
, zipalign
vai precisar ser usado antes da assinatura do arquivo APK. Se você assinar seu
APK usando o apksigner
e fizer outras mudanças no APK, a assinatura vai ser invalidada.
-
Se você usar o
jarsigner
(não recomendado), o zipalign
precisará ser usado depois da assinatura do
arquivo APK.
Para alcançar o alinhamento, o zipalign
muda o tamanho do campo "extra"
nas seções Local File Header
do ZIP. Esse processo também pode mudar os dados atuais nos campos "extra"
.
Uso
Se o APK tiver bibliotecas compartilhadas (.so
arquivos), use -P 16
.
para garantir que estejam alinhados a um limite de páginas de 16 KiB adequado para mmap(2)
em dispositivos de 16 KiB e 4KiB. Para outros arquivos, cujo alinhamento é determinado pelo
argumento de alinhamento obrigatório para zipalign
, precisa ser alinhado a 4 bytes
em sistemas de 32 e 64 bits.
Para alinhar infile.apk
e salvá-lo como outfile.apk
:
zipalign -P 16 -f -v 4 infile.apk outfile.apk
Para confirmar o alinhamento do existing.apk
, use o comando a seguir.
zipalign -c -P 16 -v 4 existing.apk
Opções
A tabela abaixo lista as opções de zipalign
disponíveis:
Opção |
Descrição |
-c |
Apenas verifica o alinhamento (não modifica o arquivo). |
-f |
Substitui o arquivo de saída existente. |
-h |
Mostra ajuda da ferramenta. |
-P <tamanho_de_página> |
alinha arquivos .so descompactados ao tamanho de página especificado em KiB. Opções válidas
para <pagesize_kb> são 4, 16 e 64. |
-p |
Alinha os arquivos .so descompactados com 4KiB. Recomenda-se usar
-P 16 , já que o uso de -p foi descontinuado. |
-v |
Mostra uma saída detalhada. |
-z |
Compacta novamente com o Zopfli. |
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 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. |"]]