App-debug. apk 和 app-debug-un 。 apk 之间的区别

在将构建变量设置为“ debug”模式的 android 工作室中,我发现了两个 apk 输出

  • App-debug. apk
  • 应用程序-调试-未对齐

这些文件有什么不同?

53573 次浏览

The unaligned apk is just an intermediate apk. First, the unaligned apk is generated. Then, the unaligned apk gets aligned and produces the aligned apk which is the app-debug.apk. You can read more about it over here.

Short Answer:

app-debug-unaligned.apk = Unaligned Signed APK
app-debug.apk = Aligned Signed APK (RAM optimized using zipalign)


Long Answer

To understand the difference we need to know the following points:

App signing process

  • generate a private key (keytool)
  • compile to get the unsigned APK -> unaligned unsigned APK
  • Sign app in debug/release mode using private key (jarsigner) -> unaligned signed APK
  • align the APK (zipalign) -> aligned signed APK

The entire signing process is explained here.

Why do we need the intermediate app-debug-unaligned.apk at all?

as per the docs:

Caution: zipalign must only be performed after the .apk file has been signed with your private key. If you perform zipalign before signing, then the signing procedure will undo the alignment.

What is the advantage? zipalign?

The advantage is that aligned APKs are optimized for RAM usage so they will consume less RAM in the devices. From the docs:

zipalign is an archive alignment tool that provides important optimization to Android application (.apk) files. ....The benefit is a reduction in the amount of RAM consumed when running the application.