Java教程

优化工作的冰山一角,app瘦身

本文主要是介绍优化工作的冰山一角,app瘦身,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!


前言:爱奇艺的产品有很多,业务线都有不同,我们业务部的主要产品是银河~奇异果,属于在智能电视上的app。对于我们播放组主要是做各产品的播放支撑及对接,还包括一些其他产品播放支撑。今天分享的是早期版本中优化工作的冰山一角,app瘦身。


1

为什么要瘦身了?

相比同类型的竞品,我们的体积稍大了些

1、安装包比较大,可能对用户安装、激活造成较大的障碍

2、期望能通过瘦身,降下APK的体积


2

可能优化的点在哪?


没有急于动手去优化,分析了理论上,可能优化的点

1、减少切片,大图,及背景图

2、图片压缩

3、采用压缩率更高的webp图片格式,代替当前的png格式

4、清理不需要的布局文件,XML格式资源文件

5、删除一些用户量极少,“无意义”的功能

6、检查第三方包,把不需要的组件、图片之类的删除或替换

7、降低so库的体积

8、把部分页面做成H5,客户端删除这部分功能

9、自查代码,尤其是逻辑相似的部分。删除冗余代码

10、降低插件体积


3

协调各Team

1、UE团队,尽量不要提供大的切图及背景图。

2、产品团队,精简一些功能,删除一些“无意义功能”,删除的很有限,哪怕有0.0001,也要争取。

3、其他团队,推动。尤其是so库,能否想办法,降低体积。

4、引入webp格式:部分rom上不支持,作罢。

5、资源混淆,

6、H5团队,H5页面,可行。

7、插件体积,能否支持so也插件化。


4

来吧,开刀


1、lint使用

     采用lint工具,删除了大量无用的资源。有一定作用。Android studio集成了lint工具,检测“unused resoure“及unused declaration等。这里我们使用lint检测了无用的资源文件。

2、其他团队so库的体积减少,作用明显著

3、代码冗余部分:效果非常有限

4、使用图片压缩工具,有一定作用

    Google推荐图片压缩工具:https://developers.google.com/speed/docs/insights/OptimizeImages,市面上有许多工具可用来对JPEG和PNG文件执行进一步的无损压缩,且不会对图片质量造成任何影响。对于JPEG文件,我们建议您使用jpegtran或jpegoptim(仅适用于Linux;使用--strip-all选项运行)。对于PNG文件,我们建议使用OptiPNG或PNGOUT。

5、H5页面,作用明显

6、支持插件 so,插件支持网络加载so及更新原则, 作用明显

7、jar包资源混淆


5

还可优化的点,为0.0001而努力

接下来还可优化的点:

1、AndResGuard进行压缩

AndResGuard介绍:

微信资源压缩打包,主要为了混淆资源ID长度(例如将res/drawable/welcome.png混淆为r/s/a.png),同时利用7z深度压缩,大大减少了安装包体积,同时也增加了逼格,提升了反破解难度。

详情参考:https://github.com/shwenzhang/AndResGuard 

原理介绍: 

http://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ==&mid=208135658&idx=1&sn=ac9bd6b4927e9e82f9fa14e396183a8f#rd


2、TinyPng压缩图片

TinyPng能够在视觉上几乎不影响图片的情况下显著压缩图片体积。

从图中可以看到,压缩3次以后基本上体积就很难再减少了,压缩6次以后体积基本上就不变了,值得高兴的是,即使不停的压缩,图片依然不会失真,所以放心大胆的使劲压缩吧。如下,压缩7次后的对比图:

图片

TinyPng好用的地方:

1、图片压缩后对视觉影响不大,但体积显著减小

2、可以批量压缩

3、压缩后文件名与原文件名相同,可以直接替换,尤其是批量压缩的时候

4、可以反复压缩6-7次,而不用担心失真

5、简单有效




这篇关于优化工作的冰山一角,app瘦身的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!