一、背景
在满足产品、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安装包瘦身相关推荐

  1. Android App安装包瘦身计划

    Android App安装包瘦身计划 Android App安装包体积优化: 理由, 指标和可以采用的方法. 本文内容归纳如下图: 为什么要安装包瘦身 安装包需要瘦身吗? 不需要吗? 安装包要瘦身的主 ...

  2. iOS App 安装包瘦身指南

    以下列出了安装包瘦身的无脑执行流程,其中"奇技淫巧"部分为选做题 资源优化 删除无用图片 使用LSUnusedResources查找无用图片 删除重复资源 压缩图片资源 使用Ima ...

  3. iOS安装包瘦身的那些事儿

    在我们提交安装包到App Store的时候,如果安装包过大,有可能会收到类似如下内容的一封邮件: 收到这封邮件的时候,意味着安装包在App Store上下载的时候,有的设备下载的安装包大小会超过100 ...

  4. 京东商城iOS客户端安装包瘦身实践

    一.概述 随着业务的快速增加,商城app的大小也在迅速增加,一度超过了300M.安装包大小的不断增加对app下载成本,推广效率产生了比较大的影响.从2018年9月份我们对商城app开始了为期二期的专项 ...

  5. 贝壳找房app使用Glide替换Picasso

    贝壳找房app使用Glide替换Picasso 现状 改造成本 原理 Glide比Picasso的2个优势: 展望 现状 操作步骤:打开贝壳找房,设置城市为"徐州", 然后点击&q ...

  6. 『贝壳找房APP』反编译到底有多简单--反编译和调试实践

    最近,在朋友圈看到有人发贝壳找房在Appstore上的下载排行榜,已进入前三.于是,我在应用宝上下载了贝壳release apk. 点击此处下载贝壳找房Apk 点击此处下载反编译debug包 Apk存 ...

  7. Unity3D_NGUI_安卓APK安装包瘦身实践

    减包瘦身是个精细活.本文整理了0907版本操作过程,以备日后参考. 经过一番折腾,各位攻城狮的努力,美术设计师的支持,策划爷的理解,UI资源(图集.字体.单局外模型贴图)从45.4MB减少到24.5M ...

  8. 安居客冲刺上市:姚劲波全力支持,距离贝壳找房还差6个我爱我家

    4月8日,港交所披露的文件显示,安居客集团(下称安居客)向港交所主板递交上市申请.在此之前,我爱我家.房天下(搜房网).贝壳找房(链家)均已实现上市,而麦田房产暂无动作. 据了解,安居客成立于2007 ...

  9. 高仿贝壳找房之使用陀螺仪移动图片Drawable

    code小生,一个专注 Android 领域的技术分享平台 作者:r17171709 地址:https://www.jianshu.com/p/206713510003 声明:本文来自 r171717 ...

最新文章

  1. Elasticsearch 2.20入门篇:基本操作
  2. 【转】在python下使用包progressbar控制进度条
  3. JVM 常用的基本配置有哪些?
  4. 2020年第十一届蓝桥杯 - 省赛 - CC++大学A组 - B.既约分数
  5. python获取控制台输出_Python | 用Python获取Windows控制台输出
  6. mysql游标书写_mysql中光标如何书写
  7. 华为RH2288v3服务器安装ESXI 6.7U3(转载)
  8. 带有分页的列表的跳转后,返回时怎么实现保留分页的页数等信息
  9. [Curator] Leader Latch 的使用与分析
  10. 一周第三次课(10月18日)
  11. VapourSynth压制教程 【Waifu2x N卡 放大教程】
  12. 超链接中 utm_source, utm_medium 等参数的含义是什么?
  13. Matplotlib 配色表
  14. 8位无符号比较器设计
  15. 【UEFI基础】EFI_HANDLE
  16. c#中实现Word、Excel、Pdf预览及音频和视频播放
  17. 连锁酒店网络互联解决方案
  18. oracle数据库的数据日增量怎么统计
  19. 章鱼体验第一天:思杰VDI之7.14.1
  20. [iOS]NSInteger int long区别

热门文章

  1. html后代选择器和子代选择器,CSS后代选择器与子元素选择器的区别
  2. python第三方库bs4库实例之爬取古诗词网上诗歌
  3. 电商客服售前售后话术培训资料合集(共150份)
  4. 神经网络系列之四 -- 线性回归方法与原理
  5. 手机怎么调整照片分辨率?照片清晰度dpi怎么调整?
  6. oracle缓冲区闩锁类型,等待缓冲区闩锁时出现超时 -- 类型 4
  7. 重磅!《中国医学影像人工智能发展报告2021-2022》
  8. matplotlib—画正弦、余弦函数图
  9. 美团上交开源PromptDet:无需标注,开放世界的目标检测器
  10. UVALIVE 2678