Android进阶7:APK瘦身(减少APK体积)

对于Android开发来说,关于减少APK体积的重要性,就不再多说了,直接进入正题吧。

首先对于APK瘦身,分为两种:压缩资源,压缩代码

1:移除无用资源和无用代码
移除无用资源分为两种:手动移除和自动移除

手动移除:
Android studio提供了相应的检测工具 Link : Analyze > Inspect Code
在这里插入图片描述

在控制台的Inspection Results中显示出需要更改或者删除的代码和资源。

关于Link, 在开发者网站可以看到更详细的信息:

使用 Lint 改进您的代码

自动移除:
关于移除,分为两种:移除代码,移除资源。
打包时自动移除无用资源:在app的build.gradle里添加:shrinkResources true
打包时自动移除无用代码:在app的build.gradle里添加:minifyEnabled true (也是开启混淆)

在这里插入图片描述

这样就可以在打包的时候自动删除无用资源和代码。
在build阶段,ProGuard会移除无用的代码但是会保留无用的资源。然后Gradle过后会移除无用的资源。 关于ProGuard ,这个就是 上图中的第三行配置。
当我们需要自定义一些不想让移除的资源或者代码的时候需要在proguard-android.txt文件中进行配置。
关于ProGuard 详细用法:

ProGuard压缩代码和资源

2:删除导入Library的一些无用资源和代码
经常导入第三方库,库里面可能还有一些我们用不到的资源或者资源,那么需要移除,其实,添加了ProGuard ,就可以自动删除第三方Library的无用资源和代码了。

3:重用资源
场景:项目需要用到好几张图片,这几张图片的差别就是颜色的差别,那么,可能我们需要放入好几张图片。
对于上述场景,我们可以仅仅添加一张图片,只不过使用代码更改图片的颜色即可。同理,图片旋转也使用,添加一张图片,旋转图片即可。

4:从代码中渲染(自定义)
在不考虑性能的情况下,假如需要一个图片,此时有两种实现方法:1:添加Icon,2:自定义View实现。
这种情况下,我们可以自定义View实现

5:压缩PNG和JPEG文件
关于压缩图片,网上有很多压缩图片的网址,确保添加的图片是无损且尽可能小的。
压缩图片网址:https://tinypng.com
图片压缩转换:https://zhitu.isux.us/

6:将图片或者Gif转化成wepb格式
WebP是Google提供的有损压缩(如JPEG)以及透明度(如PNG)的图像文件格式,但可以提供比JPEG或PNG更好的压缩。之前我们图片转wepb都是使用
智图
后来Android studio2.3之后,添加了PNG,JPEG 转Wepb的功能。
不过在4.0到4.2之间Android版本不支持alpha,无损的解析(BitmapFactory解码时就会出错)。
Wepb的优势:

  1. PNG 转 WebP 的压缩率要高于 PNG 原图压缩率,同样支持有损与无损压缩
  2. 转换后的 WebP 支持 Alpha 透明和 24-bit 颜色数,不存在 PNG8 色彩不够丰富和在浏览器中可能会出现毛边的问题
  3. WebP为网络图片提供了无损和有损压缩能力,同时在有损条件下支持透明通道。据官方实验显示:无损WebP相比PNG减少26%大小;有损WebP在相同的SSIM(Structural Similarity Index,结构相似性)下相比JPEG减少25%~34%的大小;有损WebP也支持透明通道,大小通常约为对应PNG的1/3。(同时肉眼几乎无法看出差异)

wepb详解

WebP原理和Android支持现状介绍

如果项目中最低支持版本是4.2以上的,强烈建议使用wepb。

Android开发交流群:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lmq121210/article/details/85222135