Android 应用安装包“瘦身”大作战
点击“搜狗测试”可关注我们!
1、前言
Hello,小伙伴们,随着app版本的迭代,新功能点增加,安装包的“体积”也越来越大。尽管智能手机存储空间不断升级,但我们安装包的大小不能这么“任性”。轻量的应用还是较受偏爱的(例如QQ发布简洁版-Tim)。更小的App能够使得更多的用户愿意去下载和体验。
本文将介绍下应用安装包空间占用的减负方法、以及Lint工具使用。
2、减小Apk空间占用方向
减小Apk空间占用如何开始?
安装包(APK)典型的组成结构如下
Apk文件结构
从Apk的组成结构可以看出,其中占用空间最大的部分就是代码和资源,所以我们要做安装包“瘦身”,就要从代码和资源这两个方向入手,整理关键点如下:
(1). 代码部分:冗余代码、无用代码;
(2). 资源部分:冗余资源、图片处理(压缩、图片转换等);
3、代码部分
3.1无用代码
无用代码是指工程中那些未被引用的代码和文件,例如未被引用的变量、方法和类等。对于无用代码,主要采用的是Lint工具对整个工程代码进行扫描,找出未被引用的变量、方法、类,然后根据情况处理。
静态代码分析工具 —— Lint
Lint是Android Studio自带的工具,使用方法很简单Analyze-> Inspect Code然后选择想要扫描的区域即可。
Lint 检测结果示例
Unused xml schema declaration
Unused import无用的导入
Unused declaration无用的声明
Unused method parameters无用的方法参数
3.2冗余代码
冗余代码,是指重复的代码或经过优化后可以用更小代码量替换的代码,比如完全一样的代码,重命名标志符后完全一样的代码、插入或删除语句后完全一样的代码、重复排列语句后完全一样的代码,以及结构一样或者类似的代码。好的代码应用降低冗余度,提高复用率,这除了能使代码量减少,还能提高代码的可读性。
Lint检测结果示例
declaration redundancy声明冗余
verboseor redundant code constructs 冗长冗余的代码结构
Duplicatedicons under different names 相同的icon 用了不同的名字
4、资源部分
4.1冗余资源
Apk的资源主要包括图片、xml。与冗余代码类似,资源里面可能也遗留了不少旧版本使用而新版本不再使用的图片、xml等。我们可以使用Lint来查找这些冗余资源。
下面介绍Lint检测冗余资源的使用方法。
在Anaylze中选择Run Inspection by Name
我们关注Unused Resources,在弹出的窗口输入Unused resources,即可进行Unused resources的扫描。
利用Android lint进行Unused Resources扫描结果,如图所示
Unused resources没用过的资源
点击对应项目,就可以看到详细信息,根据工程实际情况,判断是否需要该资源。
4.2图片处理
Apk本身代码占用的空间相对较小,主要的还是资源,而资源里面最主要的问题是图片。
(1). 图片压缩
对Apk安装包来说,设计师为了追求完美效果,给出的资源一般较大,故图片有比较大的压缩空间。打包过程中aapt会进行一轮压缩,采用crunch做图片预处理。可以根据实际情况,决定是否做有损压缩。
(2). jpg和png的转换
png是一种无损格式,jpg是有损格式,可以和设计师进行协商给出建议,找到图片质量和大小的折中方案。
(3). 无用图片的再次梳理
之所以要再次梳理,是因为app在版本的迭代开发中,可能遗留下许多以前版本试用的图片,但是新版本已经不再使用了,可能因为某种原因,图片的索引还残留在代码或者xml布局文件中,以致于用lint扫描时不能发现。
这里需要联合设计师一起梳理,人工检查确认并删除。
以上如有错误和不足,请大家指出。如果大家针对apk空间占用分析有建议或心得,欢迎留言。
文章参考
《移动App性能评测与优化》TMQ专项测试团队;
android开发者官网:
http://developer.android.com/index.html;
- 胸部CT发现了肺结节,随访中,什么时候停止随访?
- Android 8.1 曝严重 Bug,搜狗推出「唇语识别」技术,迪士尼收购
- 费水耗电安装难,洗碗机不背这些“锅”
- 逐渐取代QQ?Android版《微信》内测:可一对一发文件
- 【技术】无溶剂复合塑料油墨的研制及应用注意事项
- 免费赠书 | 评论区留言就送《Android进阶之光》
- LibreOffice 上架 Flathub 应用商店
- 【人物展播】2017中山互联网应用创新人物候选展播6:梁锦
- 插座到用时方恨少?别急,看看这份最全插座安装攻略!
- Android换肤笔记