Android开发之跟踪应用更新大小

572 阅读4分钟


新增功能:支持APK补丁大小估算工具中的逐个文件更新

降低APK大小一直是过去一年的热门话题。有很多原因可以解释:无论您是建立数十亿还是在昂贵且不可靠的网络上覆盖功能较弱的设备的用户,或者您只是尝试优化您的应用,每个人都可以享受较小的APK尺寸,更快的下载速度和更短的安装时间倍。

与您的应用大小相关的费用有所不同:

  • 您上传到Google Play的文件大小(原始APK大小)
  • 初始下载大小
  • 设备安装尺寸
  • 更新下载大小

我们发布了很多指南,解释了如何减少初始和设备上的APK大小,包括新的文档页面我的I / O谈话文章,它们解释了如何优化资源,缩小代码并定制APK到用户的交付'使用Multi APK等技术的设备。

这一切都很棒,但用户通常会在每个设备上安装一次应用程序,然后通过Play商店下载定期更新,这就是优化应用更新大小同样重要的原因。

针对应用更新尺寸进行优化

关于使应用程序更新更小的最好的部分是它自动发生了很多。由于Android Studio打包APK的方式有所改进,以使后续版本尽可能相似,Play商店可以计算出较小的增量更新。此外,在Play商店中引入新算法(例如最近的逐个文件修补)有助于将应用更新大小平均降低65%。

要记住的重要一点是不要干扰Android Studio和Play中的机制。

如果您使用最新的(至少2.2+)Android Studio / Android Gradle插件来构建您的发布APK,并且之后不进行修改,那么您应该很高兴。

不要使用自定义ZIP编码器设置压缩APK,也不要使用Zopfli重新压缩您的APK,否则您将错过File-by-File更新带来的巨大节省。

跟踪APK和更新大小

既然您知道为什么以及如何做正确的事情,是否有一种简单的方法来跟踪您的APK大小?您可以更改应用程序,修复错误并引入新功能,在此过程中添加资产和库,这是正常的。如何预测下次更新对用户的影响程度?



我们以几种方式表达这些信息。首先,这也是用户会看到的内容,Play Store 在Android上的应用程序列表页面上显示下载大小,这将成为已安装应用程序的用户的更新大小。

APK补丁大小估算器

对于开发人员而言,在发布之前能够看到该数字会更为理想,这就是为什么我们开源了一个名为APK patch size estimator的工具。

它是一个命令行工具,因此您可以将其集成到Continuous Integration服务器中并解析输出以包含在报告中,或通过为其提供两个这样的APK来手动调用它:

python apk_patch_size_estimator.py --old-file old.apk --new-file new.apk

这是输出的一个例子:

磁盘上的新APK大小:18,271,850字节[17.4MB]
估计新安装的下载大小:
   全新APKgzip)大小:16,339,603字节[15.6MB]
估计旧APK的更新下载大小,使用BsdiffBsdiff补丁(gzip)大小:2,989,691字节[2.85MB]
估计旧APK的更新下载大小,
使用逐个文件:
   逐个文件修补程序(gzip)大小:1,912,751字节[1.82MB]

APK补丁大小估算器实现了Play商店使用的当前压缩和增量算法,并且可以估算新安装的初始APK下载大小(它与原始APK大小不同,因为Play商店可能会应用额外的压缩)和delta补丁下载大小。我们最近更新了该工具以支持新的File-by-File更新,因此您也可以对此进行估算。

为什么估计而不是确切数字?Play商店不断发展,我们经常测试可能为用户保存数据的新压缩方法。我们的目标是在完全推广到生产后,使用任何新方法使APK补丁大小估算器保持最新。

顺便提一下,值得一提的是,对于想要了解应用程序的哪些部分在版本之间增长(或缩小)的开发人员,还有一个交互式“比较”工具,作为Android Studio中APK Analyzer的一部分提供。


在Android Studio 3.0中,我们更新了此工具,以选择性地显示逐个文件的更新大小。