app-debug.apk和app-debug-unaligned.apk之间的区别是什么?

114
在构建变体设置为“debug”模式的Android Studio中,我发现有两个apk文件的输出:
  • app-debug.apk
  • app-debug-unaligned.apk
这些文件之间有什么区别?
2个回答

114

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


76

简短回答:

app-debug-unaligned.apk = 未对齐的已签名APK文件
app-debug.apk = 对齐的已签名APK文件(使用zipalign进行了RAM优化)


详细回答

为了理解区别,我们需要知道以下几点:

应用签名过程

  • 生成私钥(keytool)
  • 编译以获得未签名APK -> 未对齐的未签名APK文件
  • 使用私钥在debug/release模式下签名应用程序(jarsigner) -> 未对齐的已签名APK文件
  • 对APK文件进行对齐(zipalign) -> 对齐的已签名APK文件

整个签名过程在 这里 进行了解释。

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

根据 文档 中所述:

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

zipalign 的优势是什么?

优点是,对齐的APK文件进行了RAM优化,因此它们将在设备上消耗更少的RAM。根据 文档 所述:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接