博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
贝壳找房APP安装包瘦身
阅读量:2351 次
发布时间:2019-05-10

本文共 795 字,大约阅读时间需要 2 分钟。

一、背景

在满足产品、UI要求的前提下,尽量减少安装包体积。
在这里插入图片描述
以customer插件为例:
插件大小为5MB, 其中1MB是dex,而bkbase占了dex的580KB;
3.1MB是图片。 减少res目录体积效果会更明显。
二、方法
1、删除冗余代码、资源文件, 可使用lint扫描; 安卓端在编译release包时设置shrinkResources为true, 即不会打包冗余资源到输出物;
2、代码重构,能复用的尽量复用;即减少类、方法、参数数量;
3、预置资源(字符串、图片)尽量复用, lint可以扫描出相同、相似图片, 保留一个就可以了;
4、非必须预置资源文件(例如图片)使用其它方式实现(例如shape),并用api下发的资源刷新;
5、占位编译依赖库;
6、混淆;
Java知识点:使用@IntDef,@StringDef替换枚举, 原理enum生成的.class占1KB左右。

三、待优化项

PS: 文件大小以release包为准。
删除重复图片、代码、冗余资源、无用import,以customer为例:
重复图片
在这里插入图片描述
在这里插入图片描述

冗余代码

待讨论: shape.xml在打包时占300~400字节, 是否必要改用代码生成GradientDrawble???

在这里插入图片描述

替换预置图片(Android/iOS):

在这里插入图片描述
顶部蓝色背景图可以先用shape实现, 然后用url下载图片后刷新。

瘦身还有个神兵利器:

Matrix-ApkChecker 是微信开源的一个apk分析工具,
功能:具有分析apk组成,冗余文件,未压缩文件,并提出优化建议等功能,并将各项数据可视化输出,可定制输出格式。
集成方式为:jar方式集成到到打包机上即可。但是我们的app使用插件话所以可能需要定制一下扫描路径去扫描每个插件。
效果:帮助量化Apk瘦身,并检测apk冗余成分
使用文档:
相关文章:

比lint好用, 剩下的就是体力活儿了。

转载地址:http://azqvb.baihongyu.com/

你可能感兴趣的文章
Apache Kylin 2.3 构建Cube失败
查看>>
Apache Kylin 2.3 样例分析
查看>>
Apache Kylin 2.3 JDBC Java API 示例
查看>>
An internal error occurred during: "Initializing Java Tooling". java.lang.NullPointerException
查看>>
ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
查看>>
IntelliJ IDEA 2018 基本配置
查看>>
Spring+Mybatis+多数据源(MySQL+Oracle)
查看>>
Mybatis读取Oracle数据库Blob字段,输出原文件
查看>>
信用卡反欺诈
查看>>
线性回归
查看>>
浏览器以只读方式打开PDF
查看>>
CDH和HDP下载地址
查看>>
MysqlDataTruncation: Data truncation: Incorrect string value: '\xF0\x9D\x90\xB6"#...' for column
查看>>
.MysqlDataTruncation: Data truncation: Data too long for column 'content' at row 1
查看>>
com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1146177 > 1048576).
查看>>
Elasticsearch 7.x生产配置
查看>>
AccessDeniedException: /opt/elasticsearch-7.0.0/config/elasticsearch.keystore
查看>>
bootstrap-table 父子表 联动表 完整例子
查看>>
Spring Cloud 2.x完整入门Demo样例(Greenwich版本)
查看>>
Spring Cloud 2.x学习笔记:2、feign改进(Greenwich版本)
查看>>