[英]how to reduce android app size that is using pdf files in assets folder
我正在使用资产文件夹中的 pdf 文件制作书籍应用程序。 压缩后所有文件都是10-20mb。 我怎样才能保持应用程序的大小很小? 目前是 500+mb。
Android Studio 提供了一些工具: APK Analyzer APK Analyzer 将拆除您的应用程序并让您知道 .apk 文件中的哪个组件占用了更大的空间? 让我们看看没有应用任何优化的防盗锁屏 apk 文件。
从 apk 分析器的输出中,您可以看到应用程序的原始大小约为 3.1MB。 应用 Play 商店压缩后,应用程序大小约为 2.5 MB。 从屏幕截图中可以看出,有 3 个主要文件夹占用了大部分应用程序大小。
所以,现在您知道 APK 是由什么组成的。 让我们看看,我们如何通过一个一个的组件优化来减小应用程序的大小。
正如我们所讨论的,这包含所有的 java 代码。 在您构建应用程序时,gradle 会将您所有模块中的所有 .class 文件合并,并将这些 .class 文件转换为 .dex 文件,并将它们合并到单个 classes.dex 文件中。 单个classes.dex文件可以容纳大约 64K 个方法。 如果超过此限制,则必须在项目中启用多索引。 这将创建另一个 classes1.dex 文件以包含所有剩余的方法。 因此 classes.dex 文件的数量取决于您拥有的方法数量。
如您所见,目前“防盗锁屏”包含 4392 个类和 29897 个方法。 这个结果没有应用 proguard。 您有两个可以应用的默认 proguard 文件。
- proguard-android-optimize.txt
- proguard-android.txt
顾名思义, “proguard-android-optimize.txt”是更具侵略性的 progurard 配置。 我们使用它作为默认的 proguard 配置。 您可以在/app 目录中的proguard-rules.pro文件中添加自定义 proguard 配置。
通过将minifyEnabled设置为 true(在压缩要点 1 中),您告诉 proguard 删除所有未使用的方法、指令并缩小classes.dex文件。
这是启用了缩小功能的 APK 的结果,
正如您所看到的,通过在我们项目的每个模块中启用 proguard,我们可以将 classes.dex 文件大小减少近 50%。 此外,您可以看到方法计数从 29897 减少到 15168(几乎 50%)。
大小从 3.1 MB 减少到 1.98 MB。 (减少约 50%)
apk 大小中的第二大组件是 res 文件夹,其中包含所有图像、原始文件和 XML。 您不能添加/删除/修改您的 XML,因为它们包含您的布局。 但是我们可以减少图像文件。
您可以从项目中选择 drawable 和 mipmap 文件夹,右键单击并选择convert to webp 。 这将在配置对话框下方打开。
按确定,它会将所有 png 图像一一转换为 webp 格式。 如果 webp 图像的尺寸大于 png,Android Studio 将自动跳过该文件。
让我们看看最终的结果:
通过应用上述简单技巧,应用程序大小从 3.19 MB 减少到 1.89 MB。
快乐编码😊
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.