zipalign

O zipalign é uma ferramenta de alinhamento de arquivo ZIP. Ele garante que todos os arquivos descompactados no arquivo estejam alinhados em relação ao início do arquivo. Isso permite que os arquivos sejam acessados diretamente usando mmap(2), eliminando a necessidade de copiar esses dados na RAM e reduzindo o uso de memória do app.

O zipalign precisa ser usado para otimizar o arquivo APK antes de distribuí-lo aos usuários finais. Isso será feito automaticamente se você criar o APK usando o Android Studio. Esta documentação é para administradores de sistemas de compilação personalizados.

Atenção: é necessário usar o zipalign em um de dois pontos específicos no processo de compilação de apps, dependendo da ferramenta de assinatura de apps que você usa:

  • Se você usa apksigner, só execute o zipalign antes da assinatura do arquivo APK. Se você assinar seu APK usando o apksigner e fizer outras mudanças no APK, a assinatura será invalidada.
  • Se você usa o jarsigner, só execute o zipalign depois da assinatura do arquivo APK.

O alinhamento é feito mudando o tamanho do campo "extra" nas seções zip de "Local File Header". Os dados existentes nos campos "extra" podem ser alterados por esse processo.

Para saber mais sobre como usar o zipalign ao criar seu app, leia Como assinar seu app.

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

Use o zipalign -h para ver o conjunto completo de sinalizações compatíveis.