美文网首页项目Android开发Android Class
老菜鸟的一次app瘦身计划。

老菜鸟的一次app瘦身计划。

作者: A_si | 来源:发表于2017-01-17 18:58 被阅读184次
    年末,项目新版本开发完上线了。暂时没什么开发任务。在考虑做点开发中来不及注意的事情的时候,组长给个任务:
    任务

    在3个月前,项目app大小是10M,开发了2个版本后,突然增大到20M.这增长速度当然引起了有关部门的注意。。。正好趁此机会,实践一下没有认真搞过的app瘦身计划。顺便说下。老菜鸟三个月没打dota了。4年来,唯一一次坚持到100天的一次

    要瘦身,首先分析为什么瘦身和怎么才可以瘦身:

    APK瘦身严格来讲不算是对应用性能的优化,应该算是对程序体验的优化。APK瘦身的价值主要有几点:

    • 省流量:特别是在4G网络下,更多的移动流量表示需要花费更多的钱(别指望着用户一个月1、2G的流量专门给你腾出几十M来用于下载安装包);
    • 给用户一个好印象,试想用户在安装你的程序需要很长的时间时,不仅会影响到他的心情,更是在浪费他的生命;
    • 如果你的APK是预置到设备中,更大的APK表示需要占用更多的存储空间,也会增加烧录的时间。
      那么怎么瘦身呢?我们要搞懂apk里到底有什么。
      把apk拉进android studio。
    app-瘦身前

    有19.7M。好大,详细分析:

    • res:目录存放资源文件。76.8%的比重。肯定要开刀。
    • classes.dex: 在Android系统中,dex文件是可以直接在Dalvik虚拟机中加载运行的文件。通过ADT,经过复杂的编译,可以把java源代码转换为dex文 件。比重也不小。也要下刀。
    • META-INF目录:META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。
    • assets:也存放资源文件,我们放有字体,js。
    • resources.arsc:编译后的二进制资源文件。
    开刀。
    • res文件臃肿,不外乎2个原因。资源多,资源文件大。资源多的原因有,无用的资源,合作开发引起的分别命名同一文件,没有复用,简单的背景图之类的没有用shape。
      1 使用lint检查无效资源。
    lint1 lint2

    OK之后 Studio会自动分析,然后可以根据结果清除无用的资源文件。
    Note:
    新三方库的文件要小心。我就是删除了分享要用的图片,结果弹出分享面板的时候是白板。。。
    2 使用lint删除无效代码。

    lin3

    检查结果如下

    检查结果

    可以看出,这代码没引用,删除。这是个乏味的体力活。

    3 压缩大的图片
    老菜鸟对比了一下2个主流的压缩平台。tinypngpngquant,发现tinypng压缩比例和效果更好。但是不付费每次只能压缩20张。没有免费的午餐。只能一次20张的压缩一遍png图片。
    4 转换为webp
    WebP是谷歌研发出来的一种图片数据格式,它是一种支持有损压缩和无损压缩的图片文件格式,派生自图像编码格式 VP8。根据 Google 的测试,无损压缩后的 WebP 比 PNG 文件少了 45% 的文件大小,即使这些 PNG 文件经过其他压缩工具压缩之后,WebP 还是可以减少 28% 的文件大小。目前很多公司已经将webP技术运用到Android APP中,比如FaceBook、腾讯、淘宝。webP相比于png最明显的问题是加载稍慢,不过现在的智能设备硬件配置越来越高,这都不是事儿。下载isparta,转化图片

    老菜鸟老了,告别了dota手速就下来了。这些事忙活了一下午。终于干完了,看下效果:
    效果

    还不错吧。。。这篇只是写了压缩图片和删除无用资源。瘦身是个持久的活,未完待续。

    相关文章

      网友评论

      • Vivi成长吧:我在使用lint时 搜索unused resources ,然后remove all unused resources会误删文件 实际上有在使用的文件也给删了……
        A_si:@拼命七娘 一般第三方的文件你不要删,自己项目里的一般不会删错。右侧显示的,你需要点几下资源,有时候会点出来了remove~
        Vivi成长吧:@A_si 为什么我删除的时候没有提示那?而且有的图片资源左侧显示的是“The resource 'R.drawable.xxx' appears to be unused”,右侧只显示“Select inspection result on the left to see details” 并没有remove 字样 不知道你遇到了么
        A_si:删除的时候会有提示,如果有用到的,你就别删,另外第三方的文件也不要删除,比如sharesdk的资源文件。
      • 可是你:什么app我去下载
        A_si:哈哈,先保密
      • 何夕丶:收藏先

      本文标题:老菜鸟的一次app瘦身计划。

      本文链接:https://www.haomeiwen.com/subject/upvmbttx.html