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