瘦身

为什么要zipAlign

2019-04-12  本文已影响45人  ukyoo

ZipAlign

zipalign是一个存档对齐工具,可为Android应用程序(APK)文件提供重要的优化。目的是确保所有未压缩数据以相对于文件开头的特定对齐开始。具体来说,它会导致APK中的所有未压缩数据(如图像或原始文件)在4字节边界上对齐。对齐以后,系统就能更加快速的调用APP内的资源

配置

只需要在项目中gradle中配置zipAlignEnabled, 在构建的时候就会自动帮我们执行

buildTypes {
    release {
        //Zipalign优化
        zipAlignEnabled true
    }

    debug {
        //Zipalign优化
        zipAlignEnabled false
    }
}

-f :覆盖现有的outfile.zip
-v :详细输出
-p :outfile.zip应该对infile.zip中的所有共享对象文件使用相同的页面对齐方式
-c :确认给定文件的对齐方式

注意事项

apkSigner是在Android N 引入的新一代签名(V2 signer), 为什么不能再签名后使用zipAlign呢,这一点文档里也有说明

注意:如果您使用 APK Signature Scheme v2 签署您的应用,并对应用进行了进一步更改,则应用的签名将无效。出于这个原因,请在使用 APK Signature Scheme v2 签署您的应用之前、而非之后使用 zipalign 等工具。

这是因为V2签名的限制,在第一次签名后,如果二进制的内容有所改变,这个签名就会被无效

为什么要对齐

为什么要对齐呢?为什么是4字节呢?
因为 4* 8 = 32位, CPU读取内存数据的时候,例如32位处理器就是一次只能处理32位,也就是4个字节的数据,如果没有对齐, 假设一个数据从第3个字节开始,那CPU读取这个数据时,就需要跨两个 4字节 ,做拼接的操作才能完成真正的4字节数据的读取.
如果我们在build时事先做了字节对齐,那么 CPU调用时的效率就会提高很多.

上一篇 下一篇

猜你喜欢

热点阅读