APK瘦身常用方法

随着业务功能的不断增加,APK安装包的体积会越来越大。当安装包的大小影响到用户体验时,就需要进行瘦身了。APK的瘦身主要通过以下三个方面进行:

1、图片资源

2、代码

3、资源混淆

一、图片资源

图片资源基本上都是APP中占比最大的一块。对于图片资源的优化是最简单的,也是最容易看到效果的。常用的方法是删除无用的图片资源和压缩图片资源。

图片格式的优先级顺序是:

VectorDrawable--WebP--JPG--PNG

webp是google研发的一种图片压缩算法,支持有损和无损以及aplha通道。其压缩率要高于jpg。其中android 4.1 原生支持webp图片的解码,4.3原生支持带有alpha通道(透明通道)的webp图片解码。现在大部分APP兼容的最低API版本是4.1,因此可以把所有不带alpha通道的png和所有jpg图统一有损压缩成webp

值得关注的是,近日,腾讯推出自研图片编码格式TPG(Tiny Portable Graphics),由腾讯音视频实验室基于AVS2内核自主研发。通过目前已经公开的测试数据,在同等质量的前提下,TPG相对WEBP格式,文件大小可以减少近30%。

二、代码

主流的方式是使用代码混淆,删除无效代码,无用JAR包以及so库。

使用第三方库时,尽量做代码提取,去除用不到的代码,并尽量减少第三方库的更新。

尽量实现代码复用,提取公共组件。

非必须组件,可以考虑动态下载so。

三、资源混淆

资源混淆的核心在于对APK中resources.arsc文件的修改。Android项目中res目录下每个资源都会有其对应的ID,通过这些ID我们可以很方便的定位某一项资源。Resources.arsc这个文件是存放在APK包中的,它本身是一个资源的索引表,里面维护着资源ID、Name、Path或者Value的对应关系。而资源混淆的原理就在于修改ID对应的资源路径(如将res/drawable/xxx修改成为r/d/a),通过这个方式可以大大减小resources.arsc文件的内容,从而达到减包的目的。

apk

相关推荐