标签:
前言:腾讯与我们学校合作开办了一门安卓课,上次课上完后,我想就其中关于资源后期优化的知识做个总结,同时也分享给大家。
资源后期优化可以从这四个方面去入手:
1. 图片压缩
2. 资源动态加载
3. Lint工具
4. 极限压缩
图片压缩
通过色彩深度,透明通道的压缩,不明显降低图片质量情况下减小图片大小。色彩深度计算机图形学领域表示在位图或者视频帧缓冲区中储存1像素的颜色所用的位数,它也称为位/像素(bpp)。色彩深度越高,可用的颜色就越多。
详情可以看下关于PNG图片优化压缩的文章:
http://www.wufangbo.com/png-image-optimization/
资源动态加载
安装包只放置最基本的资源,部分资源可以通过网络的后期动态下载。
例子:微信的emoji表情
优化前:打包表情576项,大小2.3M
优化后:打包表情120项,是原来的1/5
场景:动态下载的资源在资源缺失的情况下不会造成不可用
局限:消耗后期流量和无网络情况下体验下降
Lint工具
Android lint是在ADT 16提供的新工具,它是一个代码扫描工具,能够帮助我们识别代码结构存在的问题,主要包括:
1)布局性能(以前是 layoutopt工具,可以解决无用布局、嵌套太多、布局太多)
2)未使用到资源
3)不一致的数组大小
4)国际化问题(硬编码)
5)图标的问题(重复的图标,错误的大小)
6)可用性问题(如不指定的文本字段的输入型)
7)manifest文件的错误
Android lint可以解决如上的问题,当然还有更多,具体的可以参考Android Lint Checks。Android官方也总结了lint能解决的问题,如下图。
这是关于Lint工具的使用文章:
http://www.linuxidc.com/Linux/2014-02/97023.htm
极限压缩
#apk是一个zip压缩包
#在zip压缩包里有两种模式:Deflate和Stored
Deflate是抽气,压缩的意思,跟LayoutInflater里的inflate是相反的单词,inflate是填充,充气的意思。可以看出resources.arsc、*.png采用压缩模式,而其它采用存储模式。
如何极限压缩
#把Stored模式的变为Deflate模式。
#选择压缩算法
压缩算法 | 文件大小(kb) |
普通Zip-普通压缩 | 20016 |
普通Zip-极限压缩 | 20012 |
7zZip-普通压缩 | 19800 |
7zZip-极限压缩 | 19578 |
从表格中我们知道7zZip的压缩效果比普通Zip好,并且7zZip-极限压缩的比普通压缩要好,因此为了极限压缩,我们采用7zZip-极限压缩。
注意:
1. 在Android2.3以前的任何压缩的资源的原始大小超过1M,AssetManger读取时会抛出异常。
2. 流媒体文件不能进行压缩
3. 限制:只支持2.3以上版本程序才可以使用
因此极限压缩的极限压缩操作如下:
解压—>7zip极限压缩—>回复部分只能Store的资源
效果如下:
前:
后:
标签:
原文地址:http://www.cnblogs.com/xiabi/p/4344045.html