Разница между app-debug.apk и app-debug-unaligned.apk

В студии android с вариантом сборки, установленным в режим "отладки", я нашел два выхода apk

  • приложение-debug.apk
  • приложение-отладки unaligned.apk

В чем разница между этими файлами?

Ответ 1

Невыраженный apk является просто промежуточным apk. Во-первых, генерируется неглавный apk. Затем невыровненный apk выравнивается и создает выровненный apk, который является app-debug.apk. Вы можете прочитать об этом более здесь.

Ответ 2

Краткий ответ:

app-debug-unaligned.apk= Unaligned Signed APK
app-debug.apk= Выровненный подписанный APK (оперативная память оптимизирована с использованием zipalign)


Длинный ответ

Чтобы понять разницу, нам нужно знать следующие моменты:

Процесс подписания приложения

  • создать закрытый ключ (keytool)
  • скомпилировать, чтобы получить unsigned APK → unaligned unsigned APK
  • Подписать приложение в режиме отладки/выпуска с помощью закрытого ключа (jarsigner) → не подписанный APK
  • выровняйте APK (zipalign) → выровненный подписанный APK

Весь процесс подписания объясняется здесь.

Зачем нам вообще нужен промежуточный app-debug-unaligned.apk?

согласно docs:

Предостережение: zipalign должен выполняться только после. подписанный вашим личным ключом. Если вы выполняете zipalign перед подписанием, то процедура подписания отменяет выравнивание.

В чем преимущество? zipalign?

Преимущество состоит в том, что согласованные APK оптимизированы для использования ОЗУ, поэтому они будут потреблять меньше ОЗУ в устройствах. Из docs:

zipalign - инструмент выравнивания архива, который обеспечивает важные оптимизация для приложений Android (.apk)..... Выгода - это сокращение объема оперативной памяти, потребляемой при запуске приложения.