ChatGPT解决这个技术问题 Extra ChatGPT

app-debug.apk 和 app-debug-unaligned.apk 之间的区别

在构建变体设置为“调试”模式的 android studio 中,我发现了 apk 的两个输出

应用程序调试.apk

应用程序调试未对齐的.apk

这些文件之间有什么区别?


B
Bidhan

未对齐的 apk 只是一个中间 apk。首先,生成未对齐的 apk。然后,未对齐的 apk 对齐并生成对齐的 apk,即 app-debug.apk。您可以通过 here 了解更多信息。


S
SMR

简短的回答:

app-debug-unaligned.apk = 未对齐的签名 APK
app-debug.apk = 对齐的签名 APK(使用 zipalign 优化 RAM)

长答案

要了解差异,我们需要了解以下几点:

应用签名流程

生成私钥(keytool)

编译以获取未签名的 APK -> 未对齐的未签名 APK

使用私钥(jarsigner)在调试/发布模式下签署应用程序 -> 未对齐的签名 APK

对齐 APK (zipalign) -> 对齐签名的 APK

here 解释了整个签名过程。

为什么我们需要中间的 app-debug-unaligned.apk 呢?

根据 docs

注意:zipalign 只能在 .apk 文件使用您的私钥签名后执行。如果您在签名之前执行 zipalign,则签名过程将撤消对齐。

有什么好处?压缩对齐?

优点是对齐的 APK 针对 RAM 使用进行了优化,因此它们将在设备中消耗更少的 RAM。从 docs

zipalign 是一种存档对齐工具,可为 Android 应用程序 (.apk) 文件提供重要优化。 ....好处是减少了运行应用程序时消耗的 RAM 量。