从命令行构建 APK 后使用 zopfli 重新压缩运行 zipalign 以使其更小

Posted

技术标签:

【中文标题】从命令行构建 APK 后使用 zopfli 重新压缩运行 zipalign 以使其更小【英文标题】:Running zipalign with zopfli recompression after building APK from command line to make it smaller 【发布时间】:2016-06-04 20:26:29 【问题描述】:

如Google Developers' article 中所述,现在可以通过运行zipalign -z 使用zopfli 重新压缩APK 文件。在我的例子中,一个 5.1 MB 的 APK 文件减少了 200 KB。

我通常使用自定义 shell 脚本构建 APK,方法是运行 gradle assembleRelease

我想在上述命令之后运行zipalign -z <the final apk>。但是,zipalign 位于build-tools/<build tools version> 目录中,除了从build.gradle 文件中拉出<build tools version> 并手动构建路径外,我无法找到它。

是否可以使用gradle 命令运行zipalign,该命令会自动在正确的build-tools 目录上运行zipalign,而无需我重新构建路径?

例如gradle runBuildTools zipalign -z $FINAL_APK $FINAL_APK.out这样的命令

【问题讨论】:

注意:Google 不再建议对 APK 进行 Zopfli 压缩“更新:之前这篇文章包含一个关于在您的文件中重新压缩文件的部分APK 使用称为 Zopfli 的更强大的压缩算法。此功能现在从 android Studio 2.2 开始从我们的构建工具中删除,并且不再推荐,因为它可能会干扰未来使 Play Store 增量更新更小的计划。” 【参考方案1】:

您链接到的article 已使用 gradle 任务进行更新,以将 zopfli 压缩添加到 assembleRelease 任务的末尾。

//add zopfli to variants with release build type
android.applicationVariants.all  variant ->
  if (variant.buildType.name == 'release') 
    variant.outputs.each  output ->
        output.assemble.doLast 
            println "Zopflifying... it might take a while"
            exec 
                commandLine output.zipAlign.zipAlignExe,'-f','-z', '4', output.outputFile.absolutePath , output.outputFile.absolutePath.replaceAll('\\.apk$', '-zopfli.apk')
            
        
    
  

【讨论】:

谢谢!!这正是我所需要的。 对于未来的读者,不建议再使用 Zopfli 压缩。请查看答案中链接的文章以获取更多信息。

以上是关于从命令行构建 APK 后使用 zopfli 重新压缩运行 zipalign 以使其更小的主要内容,如果未能解决你的问题,请参考以下文章

APK使用APKTOOL命令行进行解包和重新打包

APK使用APKTOOL命令行进行解包和重新打包

APK使用APKTOOL命令行进行解包和重新打包

使用命令行工具构建 Android

安卓反编译出来的代码如何修改重新生成APK

构建-13 Analyzer APK文件分析