随着业务需求的扩展,apk size会不断增加,size太大会影响用户下载和升级的意愿,压缩size是每个大型app必须的工作。

首先来看一下apk的构成:

主要包含资源和代码,那压缩size就要从这2方面入手。

资源方面

1. 删除无用资源

通过lint或resource shinking等删除无用资源

2. 压缩图片

1)无透明度的png转成jpg

2)通过tinypng, tinyjpg等进行有损压缩,或通过ImageOptim进行无损压缩

3)在不影响质量的提前下将大图转换成webp

3. 压缩动画

压缩loading等gif动画,及其它较大的资源,如mp3

4. 动态加载

对动态表情等特定业务场景才使用的动画等资源做动态加载,app启动后在线下载,不随apk发包。

5. 使用微信资源压缩方案

方案见 https://github.com/shwenzhang/AndResGuard

代码方面

1. 开启proguard

proguard不仅能够混淆,而且能够优化代码,可以大大减小dex文件的大小。

但需要对被反射引用的类需要做好keep

2. 动态加载

对ocr(身份证识别)等较大的库做动态加载,app启动后在线下载,不随apk发包。

3. 插件化

将相对独立的业务做成插件,app启动后在线下载,不随apk发包。

4. 删除非必要的so库
很多app为了支持x86,apk至少包含arm和x86 2个ABI,甚至包括arm其实x86构架的手机也支持arm,可以删除x86 so,只保留arm。
有人认为x86手机以兼容模式运行arm so会影响效率,其实效率上的影响对用户并没有直接的感知。
删除x86 so可以大大减少apk size,特别是app集成了很多第三方so库的情况下,如fresco,rn等。
关于so的介绍详见Android 动态链接库加载原理及 HotFix 方案介绍

5. Facebook字节码优化方案redex

方案见 https://github.com/facebook/redex

Android 压缩优化apk相关推荐

  1. Android性能优化—apk瘦身

    1.代码:代码压缩混淆 2.资源方面:小图片使用SVG矢量图.移除无用资源.资源压缩.资源混淆 3.动态库:一般只需要配置armeabi和armeabi-v7a即可,相比配置各种ABI减少了大量体积( ...

  2. Android系统性能优化(66)---APK启动加速

    Android性能优化APK启动加速 一.前言 随着项目版本的迭代,App的性能问题会逐渐暴露出来,而好的用户体验与性能表现紧密相关,从本篇文章开始,我将开启一个Android应用性能优化的专题,从理 ...

  3. 【Android 内存优化】Android 原生 API 图片压缩代码示例 ( PNG 格式压缩 | JPEG 格式压缩 | WEBP 格式压缩 | 动态权限申请 | Android10 存储策略 )

    文章目录 一. 图片质量压缩 二. 图片尺寸压缩 三. Android 10 文件访问 四. 完整源码示例 上一篇博客 [Android 内存优化]图片文件压缩 ( Android 原生 API 提供 ...

  4. Android性能优化之APK瘦身最全总结

    Android性能优化之APK瘦身最全总结 随着业务复杂度的逐渐增加,代码.资源也在不断的增加,此时你的APP大小也在增加.从用户层面来说,面对动辄几十兆的APP来说在非WIFI情况下还是会犹豫要不要 ...

  5. Android 性能优化 (一)APK高效瘦身

    Android 性能优化 (一)APK高效瘦身 http://blog.csdn.net/whb20081815/article/details/70140063 Android 性能优化 (二)数据 ...

  6. Android 性能优化(62)---存检测、卡顿优化、耗电优化、APK瘦身——详解篇

    Android 性能优化,内存检测.卡顿优化.耗电优化.APK瘦身--详解篇 自2008年智能时代开始,Android操作系统一路高歌,10年智能机发展之路,如今 Android 9.0 代号P  都 ...

  7. Android性能优化之APK瘦身详解(瘦身73%)

    image 公司项目在不断的改版迭代中,代码在不断的累加,终于apk包不负重负了,已经到了八十多M了.可能要换种方式表达,到目前为止没有正真的往外推过,一直在内部执行7天讨论需求,5天代码实现的阶段. ...

  8. Android性能优化系列之apk瘦身

    Android性能优化系列之布局优化 Android性能优化系列之内存优化 为什么APK要瘦身.APK越大,在下载安装过程中,他们耗费的流量会越多,安装等待时间也会越长:对于产品本身,意味着下载转化率 ...

  9. 【Android 内存优化】Android 工程中使用 libjpeg-turbo 压缩图片 ( 初始化压缩对象 | 打开文件 | 设置压缩参数 | 写入压缩图像数据 | 完成压缩 | 释放资源 )

    文章目录 一.使用 libjpeg-turbo 压缩图片流程 二.初始化 JPEG 压缩对象 三.打开文件 四.设置压缩参数 五.开始压缩 六.循环写入压缩数据 七.完成图片压缩及收尾 八.libjp ...

最新文章

  1. 根据某一列的进行去重的小工具----duplicated.exe
  2. pandas 索引_10分钟带你学会Pandas多层级索引
  3. 数字图像处理实验(8):PROJECT 04-04,Highpass Filtering Using a Lowpass Image
  4. 【0802 | Day 7】Python进阶(一)
  5. 【MySQL】命令行遇到 ‘> 而无法结束语句编辑的解决方案
  6. 漂亮的不太像手机!三星Galaxy S11最新渲染图曝光
  7. 23种设计模式(十九)数据结构之组合模式
  8. 灵活使用示波器触发功能,帮助大大提高测量效率
  9. SLAM_三维点优化时为什么使用逆深度误差而不是深度误差?
  10. 【资料】舵机控制原理
  11. mac 回车键、空格键失灵(非物理原因)解决方法
  12. 南京全栈python培训
  13. Windows 运行中的程序的图标在任务栏显示不正常\图标变白色的解决方法
  14. 如何获取腾讯应用appid
  15. MBTI职业性格测试
  16. html5 red5,一个基于red5+flash的网络聊天室red5Chat
  17. 企业微信内自创建app 获取用户信息问题
  18. 手机拍照模糊怎么办?拍摄低像素照片如何修复清晰?
  19. Java 对图片进行大小转换
  20. 在CDH集群安装Flink

热门文章

  1. 美国正在搞一场大规模人工智能大赛,主办方是情报研究计划局
  2. 一样的月亮,不一样的心情
  3. wetool个人版_wetoo群发下载wetool-咨询
  4. 让字体变的更清晰CSS 中 -webkit-font-smoothing
  5. 安徽科技学院 信网学院网络文化节 刘洪江
  6. Process ‘command ‘C:/Program Files/Java/jdk1.8.0_192/bin/java.exe‘‘ finished with non-zero exit valu
  7. 小家电项目硬件方案分析和报价
  8. Telephone dialer
  9. 股票历史数据-股票历史数据查询怎么查?怎么查股票历史数据?
  10. 语义网、本体、OWL基础知识梳理