zipalign

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