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 oapksigner
e fizer outras mudanças no APK, a assinatura vai ser invalidada. -
Se você usar o
jarsigner
(não recomendado), ozipalign
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. |