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

在构build版本设置为“debugging”模式的android studio中,我find了apk的两个输出

  • APP-debug.apk
  • 应用程序debugging,unaligned.apk

这些文件有什么区别?

未alignment的apk只是一个中级的apk。 首先,生成未alignment的apk。 然后,未alignment的apk获得alignment,并产生alignment的apk,这是app-debug.apk。 你可以在这里阅读更多关于它。

简答:

app-debug-unaligned.apk =未alignment的已签名APK
app-debug.apk =alignment签名APK(使用zipalign优化的内存)


长答案

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

应用程序签名stream程

  • 生成一个私钥(keytool)
  • 编译得到未签名的APK – >未alignment的未签名的APK
  • 使用私钥(jarsigner)在debugging/发布模式下签名应用程序 – >未alignment的签名APK
  • alignmentAPK (zipalign) – >alignment的签名APK

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

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

根据文档 :

注意: zipalign只能在.apk文件用私钥签名才能执行。 如果在签名之前执行zipalign,则签名过程将撤消alignment。

有什么优势? 的zipalign?

优点是alignment的APK针对RAM使用进行了优化,因此它们将在设备中消耗更less的RAM。 从文档 :

zipalign是一个档案alignment工具,为Android应用程序(.apk)文件提供重要的优化。 ….好处是减less运行应用程序时消耗的RAM数量。