Android APK原始文件大小vs下载大小。如何缩小原始文件大小?

时间:2017-07-11 03:09:20

标签: android android-studio apk

我正在使用Android Studio 3.0。当我分析我的APK时,我看到以下

Raw File Size: 4.1 MB, Download Size 3.3 MB.

为什么会有所不同?

由于这是一个即时应用程序,因此无法上传。如何在不需要更改下载所需的代码/资源的情况下缩小原始文件大小?

2 个答案:

答案 0 :(得分:4)

APK Analyzer为每个文件提供两种尺寸,这些尺寸包含在您的APK中,以及每个'目录'的整体内容,包括总数。这些尺寸并不表示您在创建APK时获得的压缩(APK格式与ZIP兼容,因此您可以使用unzip -lv qqq.apk来检查此步骤对挤压总数的影响。

对于最终用户来说,两种尺寸实际上都很重要。通过较小的下载大小,它们可以让您的应用更快,并减少数据计划的浪费。使用较小的原始大小,APK会占用用户设备上较少的空间。

但是有一些微小的细节需要考虑。让我们以本机库为例(如果您的应用使用NDK)。

首先,考虑应用程序更新。谷歌Chrome团队found,如果他们不压缩本机库,应用程序更新会变得相当小。如果将此增益乘以预期的应用更新数量,这将带来一个主要优势。

其次,如果你不压缩本机库,你实际上可以减少你的应用程序的磁盘消耗(对于Android Marshmallow及以上版本),因为这样,库可以加载 - 放置,而不是解压缩到/data/data/your.app.package/lib

幸运的是,只需添加一个属性即可管理所有这些:

android:extractNativeLibs="false"

AndroidManifest.xml 文件中的应用标记。

可以对资源应用相同的注意事项:AssetManager可以从APK内部加载它们,而无需将其解压缩到磁盘 - 如果资产未在APK中压缩。

APK分析器会向您展示Google Play将如何挤压此类资源以供下载。

答案 1 :(得分:3)

来自documentation

  

原始文件大小表示磁盘上实体的解压缩大小,而“下载大小”表示实体的估计压缩大小,因为它将由Google Play提供。

因此,下载大小几乎总是小于原始文件大小,因为Google Play会通过网络传输二进制文件,从而进行额外的压缩。

没有灵丹妙药可以减少原始文件的大小,而是要考虑在APK中使用空间的位置并找出可以删除的内容。 docs有一个相当深入的指南来做这件事。