今天瘦身的应用
让我们先来看没有瘦身的apk大小
第一步:分析应用,去除无用文件
可以看到该应用大小大约是11M,相对一个资讯类应用而言还是显的有点大了,既然是应用瘦身那我们就应该先思考哪些资源比较大。可以想到的是图片、第三方库...不过这终究只是我们自己推测的并没有一个明确证据。还好Android Studio提供了一些工具可以让我们看到apk中各文件所占比重,然后我们可以看那些较"重"的文件是否有无用文件,工具路径如下 :Builde -> Analyze APK..
lib文件夹所有比重最大,但该文件夹里的东西是编译时生成的,所以无法删除.再来让我们看看assets目录。
我们发现了一些字体,既然有字体那可能在app中用到了,我们把app打开看看.
点开后,发现只有标题和设置页面用到了字体,可是assets目录下明明有几种字体,要不要删除多于的呢...
既然是字体那可能用到了Typeface这个属性,全局搜索(Shift + Crtl + F)
我们发现只有values下有该属性,难道没有用字体吗?可是app中明明有字体效果啊?既然在标题用了字体就让我们看看标题.
终于在这里找到了字体的引用,只用了一种字体,既然如此就删掉其他无用的字体,删除后apk大小如下.
相较最开始小的将近3m,让我们看看app是否可以正常运行,字体是否有改变.
字体没有变化,且程序正常运行,完美.
第二步:调整图片大小
该应用的图片是比较少的,瘦身的效果肯定不会很明显,但对多图片的应用就不好说了,我们对图片的调整主要分为再部份:对png的压缩,将jpg格式改成webp格式.
图片真少。。我们对Png的压缩主要用到了Tinypng这个网站,我们只要把png图片上传到这个网站就会自动帮助我们压缩,最后我们只下载压缩后的图片即可.
图片越大压缩效果越明显,简直是神器,且对图片的质量不会有明显的损耗.
对于webp的介绍在这里,我们不做讲解,将jpg转成webp我用的是格式工厂,虽然网上也有在线的,但不知道是不是我人口不好,没有一个打得开。。。
可以看到webp明显比较jpg小了很多,经过图片调整后apk的大小如下.
瘦身后的应用正常运行,且图片与原来的区别小到简直看不出来.
除了以上两种方式可以对apk进行瘦身外,还可以用混淆代码、资源,延迟加载so、矢量图等方式对apk更进一步的瘦身,其实这些东西是我们平常写代码就应该养成的习惯,我这里就不做过多介绍了...