优化工作的冰山一角,app瘦身
2021/5/22 18:55:50
本文主要是介绍优化工作的冰山一角,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瘦身的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南