zipalign
原文地址:http://www.qinglinyi.com/posts/zipalign/
前言
zipalign是Android构建过程的一个环节,本文主要是翻译官网关于zipalign的介绍,并且配图。
zipalign
https://developer.android.com/studio/command-line/zipalign.html
zipalign是一个归档对齐工具,它为Android应用程序(APK)文件提供重要的优化。 目的是确保所有未压缩数据以相对于文件开头的特定对齐开始。 具体来说,它会使APK中的所有未压缩数据(例如图像或raw)在4字节边界上对齐。 这允许使用mmap()直接访问所有部分,即使它们包含具有对齐限制的二进制数据。 其优点是减少运行应用程序时消耗的RAM量。
此工具应始终用于在将APK文件分发给最终用户之前对齐。 Android构建工具可以为您处理此问题。 Android Studio会自动对齐您的APK。
注意:您必须在应用程序构建过程中的两个特定点之一使用zipalign,具体取决于您使用的应用程序签名工具:
- 如果您使用apksigner,zipalign只能在签署APK文件之前执行。 如果您使用apksigner签署APK,并对APK进行进一步更改,则其签名将失效。
- 如果你使用jarsigner,zipalign只能在APK文件签名后才能执行。
通过更改zip本地文件头部分中“额外”字段的大小进行调整。 “额外”字段中的现有数据可能会被此过程更改。
有关如何在构建应用程序时使用zipalign的更多信息,请阅读签名您的应用程序。
使用
对齐 infile.apk 并保存为 outfile.apk:
1
|
zipalign [-f] [-v] <alignment> infile.apk outfile.apk
|
确认existing.apk的对齐方式:
1
|
zipalign -c -v <alignment> existing.apk
|
alignment是一个定义字节对齐边界的整数。 这必须总是4(提供32位对齐),否则它什么也不做。
标示:
- -f : 覆盖输出的 outfile.zip
- -v : 详细输出
- -p : outfile.zip应该对infile.zip中的所有共享对象文件使用相同的页面对齐
- -c : 检查给定的文件是否对齐
使用
1
|
zipalign -c -v 4 destination.apk
|
检查结果:
1
|
50 META-INF/MANIFEST.MF (OK - compressed)
|
1
|
49 AndroidManifest.xml (OK - compressed)
|
配图
看了Android构建过程分析感觉不错,不过配图不是太好看,自己结合官网的介绍配了一个图。但是由于暂时不准备单独写一篇分析的文章,便放到了此处了。
不考虑Dependencies(Library Modules/AAR Libraries/JAR Libraries),或者说将Dependencies理解成已经和Application Module进行marge了。
官网的构建配图是这样的:



浙公网安备 33010602011771号