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 o distribuir aos usuários finais. Se você criar o APK usando o Android Studio, a otimização é feita automaticamente. Esta documentação é para administradores de sistemas de compilação personalizados.

Cuidado: é preciso usar zipalign em um ponto específico do processo de compilação. 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 apksigner e fizer outras mudanças no APK, a assinatura será invalidada.
  • Se você usar jarsigner, vai precisar usar zipalign depois da assinatura do arquivo APK.

Para alcançar o alinhamento, o zipalign muda o tamanho do campo "extra" nas seções Cabeçalho de arquivo local 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 infile.apk e salvá-lo como outfile.apk:

zipalign -p -f -v 4 infile.apk outfile.apk

Para confirmar o alinhamento de existing.apk:

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.