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 contiver bibliotecas compartilhadas (arquivos .so
), use -p
para garantir que elas estejam alinhadas com um limite de páginas de 4KiB adequado para mmap(2)
. Para
outros arquivos, cujo alinhamento é determinado pelo argumento de alinhamento obrigatório do
zipalign
, o Android Studio faz um alinhamento de 4 bytes nos sistemas de 32 e 64 bits.
Para alinhar e salvar o infile.apk
como outfile.apk
:
zipalign -p -f -v 4 infile.apk outfile.apk
Para confirmar o alinhamento do existing.apk
, use o comando a seguir. Se você usa o
Android Studio ou o AGP para criar seus apps, este é o comando que precisa ser usado para verificar se o APK está
alinhado:
zipalign -c -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 | Alinha os arquivos .so não compactados. |
-v | Mostra uma saída detalhada. |
-z | Compacta novamente com o Zopfli. |