如何压缩减小少APK安卓安装包大小

本文介绍如何通过优化配置、清理未使用的资源及转换图片格式等手段,显著减小Android应用程序的APK文件大小。

一、使用APK Analyzer分析您的APK

Android Studio提供了一个简单的工具:APK Analyzer。APK分析仪将会检测您的应用程序,并让您知道.apk文件中的哪个组件占用较大的空间?


     从截图中可以看出,主要有3个文件夹占用了大部分的应用程序大小。
     classes.dex  - 这是dex文件,其中包含将在您的DVM或ART上运行的所有Java代码的字节码文件。
res  - 此文件夹包含res文件夹下的所有文件。大多数情况下,这将包含所有图像,图标和原始文件,菜单文件和布局。
resources.arsc  - 此文件保存值资源。此文件包含您的不同值文件夹下的所有数据。此资源包含字符串,维度,样式,整数,ids等。
现在我们已经分析出apk中占空间的文件和文件夹,接下来我们一步一步来减少他们的大小。

二、减少dex文件大小

在构建应用程序时,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.tx t”是优化的进阶配置。我们使用它作为默认的proguard配置。您可以在/ app目录中的proguard-rules.pro文件中添加自定义proguard 配置。
  • /build.gradle
  • release {
      //Enable the proguard
      minifyEnabled true
      proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),"proguard-rules.pro"
       
      //Other parameters
      debuggable false
      jniDebuggable false
      renderscriptDebuggable false
      signingConfig playStoreConfig //Add your own signing config
      pseudoLocalesEnabled false
      zipAlignEnabled true
      }

  •       通过将minifyEnabled设置为true,是告诉Proguard删除所有未使用的方法和类,以此来减少classes.dex文件大小。

  • 可以看到经过优化后的dex文件中类和方法明显减少,dex大小也减少了。
  • 三、减少res

                apk文件中的第二大占空间文件夹是res文件夹,其中包含所有图像,原始文件和XML。您不能添加/删除/修改您的XML,因为它们包含您的布局。但是我们可以减少图像文件。
    “ shrinkResources ”属性将删除所有那些在项目中不会使用的资源。在您的build.gradle文件中添加以下行:

  • release{
      //...
      //...
      shrinkResources true
      //...
      }
          在构建应用程序时, “ resConfigs ”属性将删除所有其他本地化资源。在我们的例子中,“防盗屏幕锁”只支持英文。而所有支持库可能具有其他语言的本地化文件夹。我们不需要 所以,添加以下行,只允许在APK文件中添加英文资源。
  • defaultConfig {
       
      //strip other than english resources
      resConfigs "en","zh"//仅支持中英文
      }
             对于 res 文件夹,通常占空间最大的就是图片了。如果你的 Android Studio 为 2.3,并且项目的 minimum version 为 18 或以上,应该使用 webp 而不是 png 图片。webp 图片有更小的体积,图片质量还没有什么损失。我们可以选中 drawable 和 mipmap 文件夹,右键后选择 convert to webp,将图片转为 webp 格式。

  •       按【确定】,它将一个一个地将所有的png图像转换为webp格式。如果webp图像的尺寸比png大,Android Studio会自动跳过该文件。
  • 总结:
  • 1.在发行版构建配置(release)中添加minifyEnabled属性为true,启用proguard。
    2.在发行版构建配置(release)中,启用shrinkResources,删除不使用的文件。
    3.通过在“resConfigs”中自定义设置所需要的语言配置资源。
    4.将所有图像转换为webp或vector drawables(矢量图)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值