赞
踩
有道词典从移动互联网之初就凭借小巧快速、功能强大的印象让用户爱上翻译查词,爱上学习。随着业务不断地迭代以及功能不断完善,有道词典不再是单纯的查词软件,而是变成了用户的综合学习平台。我们探索过社区、问答、直播、信息流等业务,目前也承载着音频、视频、课程、背单词、写作批改等等的功能。词典已经发展成为一个综合性的学习平台,小巧快速的初心仍然指引着我们不断进行启动速度以及包体积优化。
经过了不断的性能优化,目前我们的冷启动时间已经能维持在业界标准水平3s以内。我们近一个季度主要的性能优化工作集中在安装包体积优化上面。经过一系列的努力,我们包体积减少了23.7%,安装包体积从177MB减少到135MB,整体少了42MB。
以下详细介绍我们的分析以及实现细节。
介绍下包体积包含的内容以及优化方法概述
一般的APK安装包包含了以下一些目录和资源:
META-INF/ 签名文件
assets/ 程序使用的辅助资源文件
res/ 没有编译进入resources.arsc 资源文件,一般是图片
lib/ 依赖的不同native平台的库文件
resource.arsc 编译之后的文案、色值、大小、主题等资源索引
classes.dex 编译后的代码
AndroidMenifest.xml 应用的名称、版本、访问权限和引用的库文件信息
可以看出占比较大的部分主要是分别是assets/、lib/、res/、classes.dex以及resources.arsc,大概对应的就是资源、库文件、代码以及资源索引。我们主要的优化思路如下(其中蓝色框部分为目前已经处理部分):
在APK打包的过程中,aapt 工具会默认对图片进行无损压缩,不过默认的压缩并不能达到一个很好的压缩效果,经过了对比webp以及tinypng的压缩效果,我们最终选择了使用tinypng对图片进行压缩。并且我们编写了编译工具,对图片进行自动化压缩。
有损webp > tinypng > 无损webp
比如这张启动图,原大小724KB,压到75%左右的质量只有23.7KB。效果上有一点点差异,但可以接受。那么我们是否可以把全部png图压成有损webp呢?答案是否定的,可以看看下面的例子:
压缩前:
压缩后:
可以看到,相同的压缩质量下(75%),这个图就变得十分模糊,哪怕选择到了99%的压缩质量,渐变区域依然会出现一些没有自然过渡的条纹。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。