互联网时代是一个追求效率的时代,大部分用户会因为下载时间、流量消耗、手机存储空间选择较小的app,所以apk瘦身至关重要!
下面我说一下我们团队对于 apk �thin 需要注意的几点:
图片的处理
-
只支持hdpi、xhdpi、xxhdpi
因为目前这三种分辨率占据了80%,对于低分辨率我们完全可以交给Android系统来处理,对于xxxhdpi是为了适应未来而存在的,现在还未普及,对于个别的图片我们可以单独处理
-
不用图片
有些简单的图形、背景,可以通过简单的编程做出来的,像分割线、圆角、纯色的背景等
-
用Lint工具检测工程中没有用到的资源文件
Lint工具可以检测项目中没有用到的资源文件,但是对于通过反射调用的图片无法过滤,需要我们手动排除
Android studio 使用方法:Analyze->Inspect Code
Android Studio的Gradle构建系统支持自动移除无用的资源,基本配置如下:
android {
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
注意:shrinkResources 是和 minifyEnabled 一起使用
-
对于没有用到过过滤效果(带alpha值)的,用tinypng全部压缩一遍
tinypng可以实现在无损压缩的情况下图片文件大小缩小到原来的30%-50%。
tinypng的缺点是在压缩某些带有过渡效果(带alpha值)的图片时,图片会失真,这种图片可以将png图片转换为下面介绍的webP格式,可以在保证图片质量的前提下大幅缩小图片的大小。
-
对于有用到过渡效果的图片,用tinypng压缩会出现失真的现象,所以考虑将其转换为webP格式,SDK 在4.0以下需要用JNI自己编译支持webP格式图片的显示,4.0以上是可以直接支持的,png转webP格式可以用这个工具:isparta
WebP是谷歌研发出来的一种图片数据格式,它是一种支持有损压缩和无损压缩的图片文件格式,派生自图像编码格式 VP8。根据 Google 的测试,无损压缩后的 WebP 比 PNG 文件少了 45% 的文件大小,即使这些 PNG 文件经过其他压缩工具压缩之后,WebP 还是可以减少 28% 的文件大小。目前很多公司已经将webP技术运用到Android APP中,比如FaceBook、腾讯、淘宝。webP相比于png最明显的问题是加载稍慢,不过现在的智能设备硬件配置越来越高,这都不是事儿。
代码的处理
随着项目的推进,工程中会伴随者出现各种死代码和无用代码,而我们又无法很容易的将这些代码剔除掉
-
使用 Proguard
Proguard 可以帮你在代码编译时对代码进行混淆,优化和压缩。它有一个专门用来减少apk文件大小的功能叫做 tree-shaking。Proguard 会遍历你的所有代码然后找出无用处的代码。所有这些不可达(或者不需要)的代码都会在生成最终的apk文件之前被清除掉。Proguard 也会重命名你的类属性,类和接口,然整个代码尽可能地保持轻量级水平。
后续会不断更新。。。。。。