Android APK 瘦身实战(一)——APK分析

在开始APK瘦身前,先要分析这个APK有多大,就像想减肥,得知道自己有多胖、每天喝几瓶可乐、吃几包薯条对吧。

 在Android Studio2.2开始,推出了一个新的功能——APK Analyzer。APK Analyzer旨在帮助分析你的APK,查看你的APK各组成部分的大小。APK Analyzer使用很简单,可以通过三种方式打开:

  • 在Android Studio中找到你的APK,然后双击即可打开
  • 直接把你的APK拖到Android Studio的编辑区域
  • Build>Analyze APK ,然后选择要分析的APK

打开后,显示的内容是这样的:

iamge

从这里面我么可以看到APK各个组成部分的大小,其中:

  • Raw File Size :APK占用的空间大小

  • Download Size:下载该应用的大小

  • % of Total Download size :占用下载大小的百分比

dex文件

  在dex里面,我们能看到包和类的总引用个数,同时也能发现我们是否重复引用了相同的类,或者以前使用过的依赖包,后面没使用也打包进去了。

iamge

Defined Methods 是指包或者类中定义的方法数。Referenced Method是DEX文件中引用的全部方法,它包含了你定义的方法、依赖的library、定义在标准Java和Android包中的方法。比如从dex中可以看到,我把kotlin打包进去了,但是其实在代中根本没有用到kotlin,只是之前在build.gradle增加了依赖,那么这个时候就可以把他从build.gradle中移除。

资源文件

 在res文件下可以看到应用里面的各个资源文件,比如应用的图片、布局文件、color资源等,然后在resource.arsc中可以看到string、id等的定义以及对应的值。

iamge

资源文件占了应用大小的很大一部分,这也是后面瘦身会比较关注的地方。

应用对比

在APK Analyzer中,我们可以比较两个应用的大小,比如我们在优化后,可以选择APK Analyzer窗口右上角的Compare with,选择未优化的APK进行比较,例如在我去掉了kotlin依赖后,对比应用是这样的:我们可以很直白的看到变化,dex比原来小了1.3M

iamge