Apk瘦身实践

一、为什么要将apk进行体积优化?
  1.手机存储空间有限,业务方和开发法方都希望apk体积尽可能小
  2.可以减下用户的下载成本,利于app的用户的扩展。
二、app组成结构
apk结构.PNG

三、针对文件结构采取优化措施

  1. asserts优化:

  (1)删除无用字体,如果项目中必须要用到特殊字体,可以用FontZip进行字体提取。

  (2)asserts中的资源,能动态获取的尽量动态获取,比如HTML文件、图片……

  (3)能压缩存储的文件尽量压缩后放进去,要用时再通过代码解压。

  2.lib优化:

  (1)尽量不要使用功能重复的jar包

  (2)mips、arm、x86的so库不要每种都配置,现在一般只配置主流的arm即可,其他可兼容。

  (3)避免复制so库,在Android 6.0之前,so文件会压缩到apk中。系统在安装应用的时候,会把so文件解压到data分区,这样同一个so文件会有两份存在,一个在apk里,一个在data中。这也导致多占用了一倍的空间,而且会出现各种诡异的错误。在6.0+中,可以通过如下的方式进行申明:

<application

   android:extractNativeLibs=”false”>

  3.优化resources.arsc:

  (1)删除无用的资源文件

  (2)**进行资源名称混淆,混淆工具AndresGuard.

  4.优化META-INF

  (1)META-INF文件夹中有三个文件,分别是

MANIFEST.MF:存放所有文件通过sha1加密后的值在进行base64加密

CERT.SF:存放所有文件通过sha1加密后的值在进行base64加密,再加上MANIFEST.MF

CERT.RSA:包含了公钥、所采用的加密算法等信息。

除了CERT.RSA没有压缩机会外,其余的两个文件都可以通过混淆资源名称的方式进行压缩。

  5.优化res

  (1)打包时剔除无用资源,方法:
图片1.png
  (2)删除无用的语言,在打包的时候就会排除私有项目、android系统库和第三方库中非中文的资源文件了配置方法
语言.png

  (3)控制raw中资源的大小,raw下一般放音频文件,在音频文件格式的选择上需要考究一番,有wav、mp3、ogg等格式可供选择,一般优先选择ogg。

  (4)减少layout文件,融合和复用(include)

  (5)动态下载图片

  (6)图片不同分辨率的放置
     a.聊天表情就出一套图,放在hdpi中
     b.纯色小icon用svg做
     c.背景等大图,出一套放在xhdpi中
     d.logo等权重较大的图片可针对hdpi,xhdpi做两套图
     e.如果某些图在真机中确实展示异常,那就用多套图
     f.如果遇到奇葩机型,可针对性的补图
 (7)优化图片
picture.png
这是谷歌给出的建议,简单来说就是:VD->WebP->Png->JPG
     a.如果是纯色的icon,那么用svg
     b.如果是两种以上颜色的icon,用webp(将图片批量转换成webp的插件WebpConvert_Gradle_Plugin)
     c.使用Tint
     d.如果图片没有alpha通道,可以考虑jpg

7.优化dex
(1)利用Lint分析无用代码,查找未用到资源和代码
(2)通过proguard来删除无用代码

proguard.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值