美文网首页瘦身
为什么要zipAlign

为什么要zipAlign

作者: ukyoo | 来源:发表于2019-04-12 23:37 被阅读45次

ZipAlign

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

配置

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

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

    debug {
        //Zipalign优化
        zipAlignEnabled false
    }
}
  • 当然也可以手动对齐
    zipalign [-f] [-v] <alignment> infile.apk outfile.apk

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

  • 确认是否对齐
    zipalign -c -v <alignment> existing.apk

注意事项

  • 如果您使用apksigner,则只能在APK文件签名之前执行zipalign 。如果您使用apksigner对APK进行签名并对APK进行进一步更改,则其签名将失效。
  • 如果您使用jarsigner,则只能在APK文件签名执行zipalign 。

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调用时的效率就会提高很多.

相关文章

  • 为什么要zipAlign

    ZipAlign zipalign是一个存档对齐工具,可为Android应用程序(APK)文件提供重要的优化。目的...

  • Android 优化记录

    1、zipalign 对齐APKAPK优化工具zipalign的详细介绍和使用zipalign详解2、启动优化启动...

  • SDK填坑记录(Android版) - GooglePlay

    GooglePlay上传及审核问题 一、Zipalign优化 解决办法:使用Zipalign优化: 二、签名问题1...

  • Zipalign对齐apk

    准备 在zipalign文件夹中使用命令行,zipalign位置通常是在/android/build-tools/...

  • 多渠道打包

    minifyEnabledtrue// Zipalign优化zipAlignEnabledtrue// 移除无用的...

  • 利用zipalign对齐so库回顾

    最近公司app要预装华为手机,要进行一系列的优化,这里记录下app so库进行对齐的过程。 zipalign回顾 ...

  • Zipalign对Apk文件进行存档对齐

    1.什么是Zipalign? Zipalign就是一个对Apk文件进行存档对齐的优化工具,它的目的是确保所有的未压...

  • Android中的.apk之zipalign优化

    对于安卓的开发,谷歌本身也提供了很多的优化的优化工具。今天是无意间看到了zipalign,通过Zipalign可...

  • androidAPK优化zipalign工具

    在Android的操作环境中,存储在每个应用程序包的数据文件通过多个进程访问,例如,程序安装工具将读取数据列表确定...

  • Java Web版的Gradle编译Android工程

    先看完 Java Web版的Android反编译、重打包、签名、zipalign一条龙 :https://www....

网友评论

    本文标题:为什么要zipAlign

    本文链接:https://www.haomeiwen.com/subject/bwxkwqtx.html