安卓Apk优化之瘦身

众所周知,apk的性能决定了用户的体验是否完美。只有得到用户的认可,我们的产品才能够生存下去。从而有了apk优化一说。而瘦身就是其中之一。

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

因为如果不进行瘦身,默认打包的apk会包含所有未曾用到过的源代码,资源文件等,极大地增加了apk文件的体积。

App瘦身的常用技巧

第一种:配置gradle文件,开启minifyEnabled,作用是启用混淆压缩模式,会过滤掉整个项目中未使用到的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'

      }
} 

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

具体做法如下:

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

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

具体做法如下:

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

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

首先,打开tinypng网站,将项目中的png图片拖拽网页中,自动进行压缩;
然后,下载所有经过压缩的图片,替换项目中对应的png图片;
总结:该种方式能够极大的减小图片的体积,基本上能减小50%左右,效果非常显著,强烈建议掌握。

第五种:采用webp格式的图片替换png和jpg格式的图片

webp概念:
    WebP格式,谷歌(google)开发的一种旨在加快图片加载速度的图片格式。图片压缩体积大约只有JPEG的2/3,并能节省大量的服务器带宽资源和数据空间。Facebook Ebay等知名网站已经开始测试并使用WebP格式,国内的京东,淘宝客户端都在使用。webp格式是未来图片格式的趋势。

    对于服务器来说,webp格式可以说是必用的格式。对于客户端来说,可以将比较大的png图片替换为webp格式,从而减少apk的体积。
如何将得到webp格式的图片?
    有2种方式,可以选择让美工在作图的时候直接做成webp格式;也可以选择使用一些webp格式转换工具对当前已有的png图片进行转换。
如何将webp格式的图片应用到项目中?
    直接将得到的webp格式图片替换项目中的png图片即可。
webp使用注意事项
    Android4.0以及以上才支持webp格式,但是这并没有影响,因为我们开发时的minSDK就是14了,所以不用关心。

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

首先,使用压缩软件打开apk文件,然后删除那些没有使用到的文件,主要是support包中自带的图片
然后进行安装,如果安装的时候报错,则删除apk中META-INF目录,再使用签名工具对apk进行重新签名即可
注意:此方法有风险,因为我们删除了support包中的图片,而这些图片大多是被support中的类使用的,比如ActionBar,所以有
可能报错找不到对应的图片;如果采用了该方法,就需要对app进行全面测试发现没有问题后,才能让app上线。
现在对应用瘦身技巧总结,并按照重点技巧进行分类和排序,那么分类总结如下:
图片压缩:采用三方工具压缩png图片,或者使用webp格式图片替换png图片
配置gradle文件:主要是开启minifyEnabled和shrinkResources,并指定编译的语音包resConfigs
删除apk文件中未使用的图片,主要是support包中的图片文件
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值