apk瘦身

  • Proguard
    混淆文件中申明相关的不需要的类直接不参与编译,以及相关的瘦身优化等
  • Vector Drawables
    在Android5.0之后,支持直接通过标签去定义矢量图,既省了空间,又可以适配不同的屏幕达到不失真,我们可以直接从网上下载相应的SVG图片,然后利用Vector asset studio去根据图片生成矢量图,具体我们可以看下这个哥们如何去使用的
    http://www.jianshu.com/p/456df1434739
  • apk splits
    在gradle文件中添加相应的配置文件来对输出的apk进行拆分
android {
    ...
    splits {
        density {
            enable true
            exclude 'ldpi', 'tvdpi', 'xxxhdpi'
//alternatively use the following two lines to only include:
//            reset()
//            include 'mdpi', 'hdpi', 'xhdpi', 'xxhdpi'
            compatibleScreens 'small', 'normal', 'large', 'xlarge'
        }
    }
}

上面是对不同的分辨率进行拆分
enable: 启用屏幕密度拆分机制
exclude: 默认情况下所有屏幕密度都包括在内,你可以移除一些密度。
include: 表示要包括哪些屏幕密度
reset(): 重置屏幕密度列表为只包含一个空字符串 (这能够实现,在与include一起使用时可以表示使用哪一个屏幕密度,而不是要忽略哪一些屏幕密度)
compatibleScreens:表示兼容屏幕的列表。这将会注入到manifest中匹配的 节点。这个设置是可选的。
按照分辨率可想而知是对图片进行拆分,我们现在可以使用矢量图去解决这个问题
也可以按照ABI来进行拆分:

android {
  ...
  splits {
    abi {
      enable true
      reset()
      include 'x86', 'armeabi-v7a', 'mips'
      universalApk true
    }
  }
}

enable: 启用ABI拆分机制
exclude: 默认情况下所有ABI都包括在内,你可以移除一些ABI。
include:指明要包含哪些ABI
reset():重置ABI列表为只包含一个空字符串(这可以实现,在与include一起使用来可以表示要使用哪一个ABI,而不是要忽略哪一些ABI)
universalApk:指示是否打包一个通用版本(包含所有的ABI)。默认值为 false。

  • 图片的优化
    我们可以使用trimage或者Optipng等工具对图片文件进行无损压缩
    并且尽量不要使用jpeg格式的图片,可以更多的使用.9图片
  • Lint
    使用lint去检索出来unused resource,然后视情况进行删除
    检测出duplicated 东西,删除多余的重复的方法定义或者是assets等东西
  • 删除所有的debug的相关东西
  • reuse resource
    只要有可能就重复的使用你的资源,换句话说就是尽量把重复的东西抽出来当成公共的使用
  • 尽量使用推荐的媒体格式
    图片 png 音频 aac 视频 h264avc

你可能感兴趣的:(apk瘦身)