Android Apk瘦身

先分析APk的文件结构分析

这里写图片描述


  • lib文件夹:主要存放各种架构的so库,在这里我们只需要保留arm架构的so库,mips属于小众,默认也是支持arm的so的,但x86的不支持.

  • res文件夹:资源目录,包含图片,values,raw文件夹下的音频文件,各种xml文件,可以通过lint检测工具,去除没有用到静态资源

  • assets: assets 目录可以存放一些配置文件(比如webview本地资源、图片资源等等),这些文件的内容在程序运行过程中可以通过相关的 API获得。

  • classes.dex: classes.dex是java源码编译后生成的java字节码文件。优化主要通过混淆删除无用的jar和代码

  • resources.arsc:编译后的二进制资源文件

上面的方法可以一定程度上减轻代码的体积,下面介绍一些我们在项目中的一些使用优化技巧

1.对分辨率适配:我们在开发中一般就一套图最好的是1080*1920的,然后通过多个dimens.xml文件进行适配,轻松完成适配

2.一般产品给到我们图片时,我们可以通过https://tinypng.com/这个网址对图片进行进一步压缩,减轻apk的体积还可以通过WebP图片格式
这里写图片描述
这个是压缩前与压缩后图片大小的对比


tinypng介绍

  • tinypng 是一个支持压缩png和jpg图片格式的网站,通过其独特的算法(通过一种叫“量化”的技术,把原本png文件的24位真彩色压缩为8位的索引演示,是一 种矢量压缩方法,把颜色值用数值123等代替。)可以实现在无损压缩的情况下图片文件大小缩小到原来的30%-50%。
  • 但是也有一点缺陷就是在压缩带有alpha值的图片时会出现失真的情况,这种图片可以将png图片转换为下面介绍的webP格式,可以在保证图片质量的前提下大幅缩小图片的大小。

WEBP格式图片介绍

  • WebP 是谷歌研发出来的一种图片数据格式,它是一种支持有损压缩和无损压缩的图片文件格式,派生自图像编码格式 VP8。根据 Google 的测试,无损压缩后的 WebP 比 PNG 文件少了 45% 的文件大小,即使这些 PNG 文件经过其他压缩工具压缩之后,WebP 还是可以减少 28% 的文件大小。目前很多公司已经将webP技术运用到Android APP中,比如FaceBook、腾讯、淘宝。webP相比于png最明显的问题是加载稍慢,不过现在的智能设备硬件配置越来越高,这都不是事儿。

  • 假如你打算在 App 中使用 WebP,除了 Android4.0 以上提供的原生支持外,其他版本以可以使用官方提供的解析库 webp-android-backport 编译成so使用。

  • 通常UI提供的图片都是png或者jpg格式,我们可以通过 智图 或者isparta将其它格式的图片转换成webP格式,isparta可实现批量转换,墙裂推荐!


使用tintcolor实现按钮反选效果:

  • 通常按钮的正反旋图片我们都是通过提供一张按钮正常图片和一张按钮反选图片,然后通过 selector 实现,两张图片除了alpha值不一样外其它的内容都是重复的,在Android 5.0及以上的版本可以通过 tintcolor 实现只提供一张按钮的图片,在程序中实现按钮反选效果,前提是图片的内容一样,只是正反选按钮的颜色不一样。

使用Android Lint分析去除无用资源

项目中总是会有些资源明明没有被使用却一直放在那没有被及时清理,而随着产品的迭代,项目中无用的资源可能会越来越多,包体自然就会变大很多。对于这些无用资源就应该及时的删除,当然,总不可能一个个找,这时候就可以用lint了,下面以Android Studio为例说下怎么利用lint清除无用资源。
总的来说就两步:

  • Analyze - -> Run Inspection by Name –> 输入 unused resource 之后敲下回车Android Lint就会开始分析项目中哪里存在着无用资源
    这里写图片描述这里写图片描述

  • 根据Android Lint给出的分析结果,确认资源的使用情况,确认为无用资源后(一般来说全局搜索下资源名,除了在R.java中外其他地方都没引用就是无用资源)删除即可
    这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值