贝壳找房APP安装包瘦身
一、背景
在满足产品、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冗余成分
使用文档:https://github.com/Tencent/matrix/wiki/Matrix-ApkChecker#matrix-apkchecker-的使用
相关文章:https://mp.weixin.qq.com/s/tP3dtK330oHW8QBUwGUDtA
比lint好用, 剩下的就是体力活儿了。
贝壳找房APP安装包瘦身相关推荐
- Android App安装包瘦身计划
Android App安装包瘦身计划 Android App安装包体积优化: 理由, 指标和可以采用的方法. 本文内容归纳如下图: 为什么要安装包瘦身 安装包需要瘦身吗? 不需要吗? 安装包要瘦身的主 ...
- iOS App 安装包瘦身指南
以下列出了安装包瘦身的无脑执行流程,其中"奇技淫巧"部分为选做题 资源优化 删除无用图片 使用LSUnusedResources查找无用图片 删除重复资源 压缩图片资源 使用Ima ...
- iOS安装包瘦身的那些事儿
在我们提交安装包到App Store的时候,如果安装包过大,有可能会收到类似如下内容的一封邮件: 收到这封邮件的时候,意味着安装包在App Store上下载的时候,有的设备下载的安装包大小会超过100 ...
- 京东商城iOS客户端安装包瘦身实践
一.概述 随着业务的快速增加,商城app的大小也在迅速增加,一度超过了300M.安装包大小的不断增加对app下载成本,推广效率产生了比较大的影响.从2018年9月份我们对商城app开始了为期二期的专项 ...
- 贝壳找房app使用Glide替换Picasso
贝壳找房app使用Glide替换Picasso 现状 改造成本 原理 Glide比Picasso的2个优势: 展望 现状 操作步骤:打开贝壳找房,设置城市为"徐州", 然后点击&q ...
- 『贝壳找房APP』反编译到底有多简单--反编译和调试实践
最近,在朋友圈看到有人发贝壳找房在Appstore上的下载排行榜,已进入前三.于是,我在应用宝上下载了贝壳release apk. 点击此处下载贝壳找房Apk 点击此处下载反编译debug包 Apk存 ...
- Unity3D_NGUI_安卓APK安装包瘦身实践
减包瘦身是个精细活.本文整理了0907版本操作过程,以备日后参考. 经过一番折腾,各位攻城狮的努力,美术设计师的支持,策划爷的理解,UI资源(图集.字体.单局外模型贴图)从45.4MB减少到24.5M ...
- 安居客冲刺上市:姚劲波全力支持,距离贝壳找房还差6个我爱我家
4月8日,港交所披露的文件显示,安居客集团(下称安居客)向港交所主板递交上市申请.在此之前,我爱我家.房天下(搜房网).贝壳找房(链家)均已实现上市,而麦田房产暂无动作. 据了解,安居客成立于2007 ...
- 高仿贝壳找房之使用陀螺仪移动图片Drawable
code小生,一个专注 Android 领域的技术分享平台 作者:r17171709 地址:https://www.jianshu.com/p/206713510003 声明:本文来自 r171717 ...
最新文章
- Elasticsearch 2.20入门篇:基本操作
- 【转】在python下使用包progressbar控制进度条
- JVM 常用的基本配置有哪些?
- 2020年第十一届蓝桥杯 - 省赛 - CC++大学A组 - B.既约分数
- python获取控制台输出_Python | 用Python获取Windows控制台输出
- mysql游标书写_mysql中光标如何书写
- 华为RH2288v3服务器安装ESXI 6.7U3(转载)
- 带有分页的列表的跳转后,返回时怎么实现保留分页的页数等信息
- [Curator] Leader Latch 的使用与分析
- 一周第三次课(10月18日)
- VapourSynth压制教程 【Waifu2x N卡 放大教程】
- 超链接中 utm_source, utm_medium 等参数的含义是什么?
- Matplotlib 配色表
- 8位无符号比较器设计
- 【UEFI基础】EFI_HANDLE
- c#中实现Word、Excel、Pdf预览及音频和视频播放
- 连锁酒店网络互联解决方案
- oracle数据库的数据日增量怎么统计
- 章鱼体验第一天:思杰VDI之7.14.1
- [iOS]NSInteger int long区别