Diferença entre app-debug.apk e app-debug-unaligned.apk

113

No Android Studio com a variante de compilação definida para o modo "depurar", encontrei duas saídas de apk

  • app-debug.apk
  • app-debug-unaligned.apk

Quais são as diferenças entre esses arquivos?

Khaled Saif
fonte

Respostas:

113

O apk não alinhado é apenas um apk intermediário. Primeiro, o apk não alinhado é gerado. Em seguida, o apk não alinhado é alinhado e produz o apk alinhado que é o app-debug.apk. Você pode ler mais sobre isso aqui .

Bidhan
fonte
75

Resposta curta:

app-debug-unaligned.apk= APK assinado não
app-debug.apkalinhado = APK assinado alinhado (RAM otimizada usando zipalign)


Resposta longa

Para entender a diferença, precisamos saber os seguintes pontos:

Processo de assinatura de aplicativo

  • gerar uma chave privada (keytool)
  • compilar para obter o APK não assinado -> APK não assinado não alinhado
  • Assine o aplicativo no modo de depuração / liberação usando a chave privada (jarsigner) -> APK assinado não alinhado
  • alinhe o APK (zipalign) -> APK assinado alinhado

Todo o processo de assinatura é explicado aqui .

Por que precisamos do intermediário app-debug-unaligned.apk?

conforme a documentação :

Cuidado: o zipalign só deve ser executado após o arquivo .apk ter sido assinado com sua chave privada. Se você executar zipalign antes de assinar, o procedimento de assinatura desfará o alinhamento.

Qual é a vantagem? zipalign?

A vantagem é que os APKs alinhados são otimizados para uso de RAM, de forma que consumam menos RAM nos dispositivos. Dos documentos :

zipalign é uma ferramenta de alinhamento de arquivo que fornece otimização importante para arquivos de aplicativos Android (.apk). .... O benefício é uma redução na quantidade de RAM consumida durante a execução do aplicativo.

SMR
fonte