美文网首页项目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手速就下来了。这些事忙活了一下午。终于干完了,看下效果:
效果

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

相关文章

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

    年末,项目新版本开发完上线了。暂时没什么开发任务。在考虑做点开发中来不及注意的事情的时候,组长给个任务: 在3个月...

  • Android App安装包瘦身计划

    Android App安装包瘦身计划 Android App安装包体积优化: 理由, 指标和可以采用的方法. 本文...

  • App瘦身、性能优化总结

    App瘦身、性能优化总结 App瘦身、性能优化总结

  • 项目瘦身计划

    项目改版后,为了以防万一,之前老的项目文件头没有删除,开发完成后,计划对项目进行瘦身。 在瘦身前,记录项目ipa包...

  • iOS App瘦身计划(Version 1.0)

    1.编译器的优化级别 Build Settings -> Optimization Level ,release版...

  • 21天健康瘦身计划 | 第1天,打开唤醒我们的身体

    21天 健康瘦身计划 欢迎大家加入Wake21天健康瘦身计划,今天是本次瘦身计划的第1天,训练难度会小很多,主要是...

  • 老菜鸟

    游戏已开始 孩子却说肚子疼 要去卫生间 队友们个个严阵以待 大战一触即发 我怎能忍心让他们四对五 我一个箭步窜的电...

  • 从资源和代码两方面为App瘦身处理

    Git原文:从资源和代码方面为App瘦身处理       对App包瘦身处理是为了减少包的大小,节约用户下载App...

  • APP瘦身

    随着开发的进行 App的体积不断的增大。如何瘦身 也是一个问题。 图片文件的处理。 图片文件 往往占据了开发包一个...

  • App瘦身

    App瘦身就是在不减少App功能的前提下,通过一些技巧来减少APK包的体积, 从而提升用户的下载体验,App瘦身的...

网友评论

  • 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