一、APP瘦身的概念

  APP瘦身指定是在不减少APP功能的前提下,通过一些技巧将打包出来的APK的体积尽可能的减少。这样做的好处有这么几个:加快用户的下载速度,节省用户下载流量,提升用户的下载体验。

二、APP瘦身的技巧

  1、配置gradle文件,开启minifyEnable,作用是开启混淆压缩模式,会过滤掉整个项目中未使用的jar和class文件,对代码进行混淆,从而减少dex文件的大小。具体做法是:

buildTypes {
        //增加构建类型
        releaseMinifyEnabled {
            //开启dex字节码压缩,舍去未使用的jar和class文件
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        //默认release构建类型
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
} 

  2、配置gradle文件,开启shrinkResources,作用是将res,目录下未使用的图片文件进行特殊处理,其具体做法是将未使用的图片全部变成1×1像素的小图,从而减少res目录的大小。具体做法是:

shrinkResources {
    //启用res资源过滤,会将项目中未使用到的图片变成1x1的小图,从而减少体积
    shrinkResources true
    minifyEnabled true
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}

  3、配置gradle文件,指定resConfigs,作用是指定打包时编译的语言包类型,未指定的其他语言包,将不会打包的apk文件中,从而减少apk体积的大小。具体做法是:

defaultConfig {
    applicationId "com.example.lxj.appthin"
    minSdkVersion 14
    targetSdkVersion 24
    versionCode 1
    versionName "1.0"
    //配置打包时编译的语言类型,默认会编译value目录,此处再增加一个中文类型
    resConfigs("zh")
}  

  4、采用第三方工具(如tinypng)来进一步压缩项目中所有png图片,从而进一步减少apk的体积。具体做法:

    ① 打开tinypng碗盏,将项目中的png图片拖拽到网页中,自动进行压缩;

    ② 下载所有经过压缩的图片,替换项目中对应的png图片;

    ③ 该方式可以很大程度上减少图片的体积,可达50%左右,效果非常显著。

  5、采用webP格式的图片替换调png和jpg格式的图片

    webP的概念:

      webP是谷歌开发的一种旨在加快图片加载速度的图片格式。图片压缩体积大约只有JPEG的2/3,并且能节省大量的服务器宽带资源和数据空间。国内的淘宝、京东客户端都在使用,webP是未来图片格式的趋势。对于服务器来说,webP格式可以说是必用的格式,对于客户端来说,可以将比较大的png图片替换成webP格式的,从而减少apk的体积。

    如何得到webP格式的图片:

      两种方式:一种是直接让美工在作图时直接做成webP格式,还有一种就是使用转换工具,将当前的png图片转换成webP图片。

    如何将webP格式的图片应用到项目中:

      直接将得到的webP格式的图片替换项目中的png图片即可。

    webP的使用注意事项:

      Android4.0及以上才支持webP格式的图片!!!

  6、比较hack的方式,删除已签名的apk文件中未使用的图片资源(主要是support包中自带的图片),然后使用证书进行重新打包,操作步骤如下:

    ① 首先使用压缩软件打开apk文件,删除那些没用用到的文件,主要是support包中自带的文件

    ② 然后进行安装,如果安装的时候报错,则删除apk中META_INF目录,在使用签名工具对apk进行重新签名即可

    注意:此方法有风险,因为我们删除了support包中的图片,而这些图片大多是被support包中的类锁使用的,比如ActionBar,所以有可能报错找不到资源文件,如果采用了这种方法,就需要对app进行全面测试发现没有问题之后,才能让app上线。

 

总结如下:

  对apk瘦身的操作主要有这么两类:

  第一类是对图片进行压缩,主要是采用了第三方的工具比如说tinypng或者是将图片格式转换成为webP格式的图片;

  第二类是配置gradle文件,主要是开启了minifyEnabled和shrinkResources,并指定编译的语言包resConfigs;

  第三类是删除apk文件中未使用的图片,主要是support包中的图片文件。

  

posted on 2017-03-04 19:03  从前有個人  阅读(442)  评论(0编辑  收藏  举报