Różnica między app-debug.apk i app-debug-unaligned.apk

113

W Android Studio z wariantem kompilacji ustawionym na tryb „debugowania” znalazłem dwa wyjścia apk

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

Jakie są różnice między tymi plikami?

Khaled Saif
źródło

Odpowiedzi:

113

Niezrównany apk to tylko pośredni apk. Najpierw generowany jest niewyrównany apk. Następnie niewyrównany apk zostaje wyrównany i tworzy wyrównany plik apk, którym jest app-debug.apk. Możesz przeczytać więcej na ten temat tutaj .

Bidhan
źródło
75

Krótka odpowiedź:

app-debug-unaligned.apk= Unaligned Signed APK
app-debug.apk= Aligned Signed APK (zoptymalizowana pamięć RAM przy użyciu zipalign)


Długa odpowiedź

Aby zrozumieć różnicę, musimy znać następujące punkty:

Proces podpisywania aplikacji

  • wygeneruj klucz prywatny (keytool)
  • skompiluj, aby uzyskać niepodpisany APK -> unaligned unsigned APK
  • Zarejestruj aplikację w trybie debugowania / wydania przy użyciu klucza prywatnego (jarsigner) -> unaligned signed APK
  • wyrównaj APK (zipalign) -> wyrównany podpisany APK

Cały proces podpisywania jest wyjaśniony tutaj .

Dlaczego w ogóle potrzebujemy półproduktu app-debug-unaligned.apk?

zgodnie z dokumentacją :

Uwaga: zipalign można wykonać dopiero po podpisaniu pliku .apk kluczem prywatnym. Jeśli wykonasz zipalign przed podpisaniem, procedura podpisywania cofnie wyrównanie.

Jaka jest zaleta? zipalign?

Zaletą jest to, że dopasowane pliki APK są zoptymalizowane pod kątem użycia pamięci RAM, więc będą zużywać mniej pamięci RAM w urządzeniach. Z dokumentów :

zipalign to narzędzie do wyrównywania archiwów, które zapewnia ważną optymalizację plików aplikacji na Androida (.apk). .... Korzyścią jest zmniejszenie ilości pamięci RAM używanej podczas uruchamiania aplikacji.

SMR
źródło