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,zipalignvai precisar ser usado antes da assinatura do arquivo APK. Se você assinar seu APK usando oapksignere fizer outras mudanças no APK, a assinatura vai ser invalidada. -
Se você usar o
jarsigner(não recomendado), ozipalignprecisará 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. |