我正在使用资产文件夹中的pdf文件制作图书应用。压缩后所有文件均为10-20mb。如何缩小应用程序的大小?当前是500 + mb。
[Android Studio提供了一个非常有用的工具:APK Analyser APK分析器将关闭您的应用程序,并让您知道.apk文件中的哪个组件占用的空间更大?让我们看看没有进行任何优化的防盗屏幕锁定apk文件。
从apk分析器输出中,您可以看到应用程序原始大小约为3.1MB。应用播放存储压缩后,应用程序大小约为2.5 MB。从屏幕截图中可以看到,主要的3个文件夹占用了大多数应用程序大小。
所以,现在您知道APK是由什么组成的。让我们来看看,如何通过逐一优化组件来减小应用程序的大小。
正如我们所讨论的,它包含所有Java代码。在构建应用程序时,gradle将合并所有模块中的所有.class文件,并将这些.class文件转换为.dex文件,并将它们合并为单个classes.dex文件。单个classes.dex文件可以容纳大约64K个方法。如果超过此限制,则必须在项目中启用multidexing。这将创建另一个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(在Compression Gist 1中,您要告诉Proguard删除所有未使用的方法,说明并缩小classes.dex文件。这里是缩小启用的APK的结果,
您可以通过在项目的每个模块中启用proguard来看到,我们可以将classes.dex文件大小减少近50%。同样,您可以看到方法数量从29897减少到15168(几乎50%)。
大小从3.1 MB减小到1.98MB。 (减少约50%)
apk大小中第二大的组件是res文件夹,其中包含所有图像,原始文件和XML。您无法添加/删除/修改XML,因为它们包含您的布局。但是我们可以减少图像文件。
您可以从项目中选择可绘制文件夹和mipmap文件夹,右键单击并选择转换为webp
按确定,它将所有png图像一一转换为webp格式。如果webp图片的大小大于png,则Android Studio将自动跳过该文件。
让我们看看最终结果:
通过应用上述简单的技巧,应用程序大小从3.19 MB减小到1.89 MB。
快乐编码😊