Android 压缩优化apk
随着业务需求的扩展,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发包。
5. Facebook字节码优化方案redex
方案见 https://github.com/facebook/redex
Android 压缩优化apk相关推荐
- Android性能优化—apk瘦身
1.代码:代码压缩混淆 2.资源方面:小图片使用SVG矢量图.移除无用资源.资源压缩.资源混淆 3.动态库:一般只需要配置armeabi和armeabi-v7a即可,相比配置各种ABI减少了大量体积( ...
- Android系统性能优化(66)---APK启动加速
Android性能优化APK启动加速 一.前言 随着项目版本的迭代,App的性能问题会逐渐暴露出来,而好的用户体验与性能表现紧密相关,从本篇文章开始,我将开启一个Android应用性能优化的专题,从理 ...
- 【Android 内存优化】Android 原生 API 图片压缩代码示例 ( PNG 格式压缩 | JPEG 格式压缩 | WEBP 格式压缩 | 动态权限申请 | Android10 存储策略 )
文章目录 一. 图片质量压缩 二. 图片尺寸压缩 三. Android 10 文件访问 四. 完整源码示例 上一篇博客 [Android 内存优化]图片文件压缩 ( Android 原生 API 提供 ...
- Android性能优化之APK瘦身最全总结
Android性能优化之APK瘦身最全总结 随着业务复杂度的逐渐增加,代码.资源也在不断的增加,此时你的APP大小也在增加.从用户层面来说,面对动辄几十兆的APP来说在非WIFI情况下还是会犹豫要不要 ...
- Android 性能优化 (一)APK高效瘦身
Android 性能优化 (一)APK高效瘦身 http://blog.csdn.net/whb20081815/article/details/70140063 Android 性能优化 (二)数据 ...
- Android 性能优化(62)---存检测、卡顿优化、耗电优化、APK瘦身——详解篇
Android 性能优化,内存检测.卡顿优化.耗电优化.APK瘦身--详解篇 自2008年智能时代开始,Android操作系统一路高歌,10年智能机发展之路,如今 Android 9.0 代号P 都 ...
- Android性能优化之APK瘦身详解(瘦身73%)
image 公司项目在不断的改版迭代中,代码在不断的累加,终于apk包不负重负了,已经到了八十多M了.可能要换种方式表达,到目前为止没有正真的往外推过,一直在内部执行7天讨论需求,5天代码实现的阶段. ...
- Android性能优化系列之apk瘦身
Android性能优化系列之布局优化 Android性能优化系列之内存优化 为什么APK要瘦身.APK越大,在下载安装过程中,他们耗费的流量会越多,安装等待时间也会越长:对于产品本身,意味着下载转化率 ...
- 【Android 内存优化】Android 工程中使用 libjpeg-turbo 压缩图片 ( 初始化压缩对象 | 打开文件 | 设置压缩参数 | 写入压缩图像数据 | 完成压缩 | 释放资源 )
文章目录 一.使用 libjpeg-turbo 压缩图片流程 二.初始化 JPEG 压缩对象 三.打开文件 四.设置压缩参数 五.开始压缩 六.循环写入压缩数据 七.完成图片压缩及收尾 八.libjp ...
最新文章
- 根据某一列的进行去重的小工具----duplicated.exe
- pandas 索引_10分钟带你学会Pandas多层级索引
- 数字图像处理实验(8):PROJECT 04-04,Highpass Filtering Using a Lowpass Image
- 【0802 | Day 7】Python进阶(一)
- 【MySQL】命令行遇到 ‘> 而无法结束语句编辑的解决方案
- 漂亮的不太像手机!三星Galaxy S11最新渲染图曝光
- 23种设计模式(十九)数据结构之组合模式
- 灵活使用示波器触发功能,帮助大大提高测量效率
- SLAM_三维点优化时为什么使用逆深度误差而不是深度误差?
- 【资料】舵机控制原理
- mac 回车键、空格键失灵(非物理原因)解决方法
- 南京全栈python培训
- Windows 运行中的程序的图标在任务栏显示不正常\图标变白色的解决方法
- 如何获取腾讯应用appid
- MBTI职业性格测试
- html5 red5,一个基于red5+flash的网络聊天室red5Chat
- 企业微信内自创建app 获取用户信息问题
- 手机拍照模糊怎么办?拍摄低像素照片如何修复清晰?
- Java 对图片进行大小转换
- 在CDH集群安装Flink
热门文章
- 美国正在搞一场大规模人工智能大赛,主办方是情报研究计划局
- 一样的月亮,不一样的心情
- wetool个人版_wetoo群发下载wetool-咨询
- 让字体变的更清晰CSS 中 -webkit-font-smoothing
- 安徽科技学院 信网学院网络文化节 刘洪江
- Process ‘command ‘C:/Program Files/Java/jdk1.8.0_192/bin/java.exe‘‘ finished with non-zero exit valu
- 小家电项目硬件方案分析和报价
- Telephone dialer
- 股票历史数据-股票历史数据查询怎么查?怎么查股票历史数据?
- 语义网、本体、OWL基础知识梳理