美文网首页Android技术知识Android开发经验谈Android开发
超好的包体积优化教程,不仅仅是优化!

超好的包体积优化教程,不仅仅是优化!

作者: 不落魄Android开发 | 来源:发表于2022-07-13 21:57 被阅读0次

作者:yechaoa

市面上有很多优化方案,但是都没有一个完整的链路体系,现在它来了,本文将带你进阶新高度,不管是面试、绩效KPI,还是汇报宣讲,都能让你游刃有余!

前置必读:

Android包体积优化(常规、进阶、极致)

涵盖各阶段全面的优化方案。

注意本文更偏向于方法论和规划能力,重点倾向于如何做好一个技术topic,如果单纯的想看技术方案,可以搜索前置必读。

一、背景

  • 提升下载转化率
  • ...
  • 提升更新率,这个是鲜有人提到的,二次下载同样重要,它能推动业务快速落地。

二、现状

  • 最新版本?MB,突破80大关?100大关?竞对?
  • 近6个月平均每个月增速?MB
  • 近6个月平均每个版本更新周期(7天?10天?)

输出报表

三、目标

减少30MB & 降低30%

四、现状具体分析

  1. 图片占比15%
  2. 代码占比25%
  3. so文件50%
  4. 其他10%

结合项目分析,输出每项占比背后的具体因素(设计花哨?业务复杂?架构合理?)

输出饼图

五、优化思路

  1. 压缩参与打包的文件
  2. 减少参与打包的文件

六、规划思考

  1. 如何保证稳定性?
  2. 如何长效治理?

站在更高的角度去思考问题

七、里程碑

  1. 信息公示
  2. 确保进度稳中推进
  3. 有风险及时寻求资源支持

八、抓手

  • Android Studio
  • ApkChecker
  • ClassShark
  • ...
  • 产出具有项目特色的工具

九、技术大图

汇报示例

十、图片优化

手动 -> 脚本

十一、代码优化

十二、远程so

需要熟悉打包流程,知道Gradle的各种Task执行在干什么事。

打包阶段,在合并apk之前,把需要远程的so文件上传至远端,然后剔除掉。

Flutter的so远程这方面没啥资料,提一下,源码搜一下FlutterLoader,继承FlutterLoader重写startInitialization,原理就是干预原有的so文件加载路径。

12.1 下载流程

沉淀通用的下载SDK

  1. 网络状态管理
  2. 下载任务优先级调度
  3. 断点续传
  4. ...
  • 12.1.1 启动下载(闲时)

闲时下载:用户是无感知的,即使失败,也不需要交互形式表现。

  • 12.1.2 按需下载

按需下载:下载流程与闲时下载一样,但交互表现形式不一样,需要让用户感知你在干什么、什么进度,提供一个loading页承载。

自检:不一定是我们代码的问题,可能是用户网络不可用、存储不够等

十三、测试

  1. 兼容性:android 5.0-12.0
  2. 是否重复下载、是否可用(32/64)
  3. 断网、弱网
  4. 覆盖安装
  5. 前台退后台
  6. ...

十四、监控告警

14.1 埋点

  1. success
  2. error code/message
  3. so name
  4. retry
  5. demotion
  6. storage size
  7. download type
  8. download time
  9. 设备信息
  10. 网络信息
  11. 用户信息
  12. ...

14.2 监控

  1. 下载成功率
  2. load成功率
  3. loading页打开成功率
  4. ...

14.3 告警

?分钟?次失败

告警形式包括但不限于钉钉群、微信群、短信、电话等。

14.4 排障

  1. 排障指南
  2. 数据库底表查询sql

十五、长效治理

打包后置卡口的设计原理:

  1. 打包过程中会对资源文件、代码文件、jar/aar等文件进行合并,既然知道有哪些文件,就可以知道这些文件的大小,就可以输出一个file size的文件作为当前版本的基线。
  2. 阈值配置信息可写死,可配置。

十六、结果

  • 优化前、优化后对比
  • 竞对 对比
  • 下载时间对比
  • 安装时间对比
  • ...

输出报表

十七、未来规划

  1. 白名单 logo?
  2. 沉淀方法论?
  3. 流程工具化、智能化?
  4. 月度报告?
  5. 数据大盘?
  6. ...

十八、价值&意义

  1. 技术:沉淀通用组件?创新flutter?
  2. 团队:影响力?
  3. 公司:减少带宽,全年节省?W经费
  4. 用户:下载时间减少?安装时间减少?
  5. 社会:每次下载减少?M流量,全年节省流量?亿
  6. ...

十九、思考

  1. 需要做到极致吗?理论上启动非必须的图片、文件、so都是可以远程的。(减肥是要越瘦越好吗?)
  2. 极简包?

二十、面试问题

  1. 为什么选用tinypng,原理是什么,还有其他方案吗?
  2. 远程so的选定标准是什么?
  3. 支持断点续传吗?
  4. 会重复下载吗?
  5. 下载可以根据网络选择吗?
  6. 有文件完整性校验吗?
  7. 有下载优先级吗?
  8. 怎么避免64位设备下到32位so文件?
  9. so文件更新之后会在设备上与老的版本共存吗?
  10. 兜底方案是什么?
  11. 还有哪些可以优化的地方?
  12. ...

最后

  1. 顶级厨师在线烹饪,做好了自己吃,不负责喂
  2. 多思考,深度思考,可以梦到的那种
  3. 多搞点花样,多体现个人部分,即使没有技术深度
  4. 角色转换,个人、团队、产品、拉新运营、用户、公司、社会...
  5. 技术价值、业务价值
  6. 别忘了三连 ~

不太喜欢理论,更喜欢实际操作的,可以搜索查看,但是还是建议大家培养一些规划类思维,毕竟往上走,总有一天是需要出规划和做一些管理的事情的。

相关文章

  • 超好的包体积优化教程,不仅仅是优化!

    作者:yechaoa 市面上有很多优化方案,但是都没有一个完整的链路体系,现在它来了,本文将带你进阶新高度,不管是...

  • iOS性能优化

    1、参考文章 TableView优化 FPS监测 //启动优化、内存优化、卡顿优化、线程优化、电量优化、包体积...

  • Mac上提取assets.car图片

    我们在进行包体积优化时,会去查看分析ipa包,因为看到这篇文章iOS 优化IPA包体积(今日头条)[https:/...

  • iOS的性能优化

    1、ipa包体积优化 1.1 编译配置优化:编译器代码层面优化Optimize Level;Bitcode(较难...

  • vue项目优化

    vue 项目优化 项目打包体积优化 通常vue项目通过webpack打包后,会出现vendor包的体积过大的情况,...

  • 包体积优化

    为什么需要优化包体积 下载转化率,包体积增加不利于用户下载 推广成本,包体积增大推广成本也会加大 应用市场限制 包...

  • 包体积优化

    1.删除无用图片资源https://github.com/tinymind/LSUnusedResources2....

  • 包体积优化

    Aandroid的安装包APK文件本身就是个压缩文件,把后缀改成.zip,解压后,能看到安装包的内容包括 要减少安...

  • 包体积优化

    https://juejin.cn/post/7116089040264232967[https://juejin...

  • 性能优化-包体积优化

    通过实践,已经调研过并实施的有效方案: 1. 删除无用的资源库 结果:删除无用私有库代码,删除无用的库,有效果 2...

网友评论

    本文标题:超好的包体积优化教程,不仅仅是优化!

    本文链接:https://www.haomeiwen.com/subject/jywtirtx.html