APK 瘦身优化小结

APK 组成部分

在这里插入图片描述
APK 优化主要分为:Dex、Resource、Assets、Native Libraries

检测工具

Matrix-ApkChecker是针对android安装包的分析检测工具,根据一系列设定好的规则检测apk是否存在特定的问题,并输出较为详细的检测结果报告,用于分析排查问题以及版本追踪。

Matrix-ApkChecker

优化措施

代码混淆

使用 ProGuard 混淆代码

在 Android 中代码混淆和压缩都是通过 ProGuard 来实现的,ProGuard会检测和移除代码中未使用的类、字段、方法和属性。

在 build.gradle中,使用minifyEnabled属性来开启代码混淆:

android {
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
    }
    ...
}
使用shrinkResources压缩资源

在 build.gradle 中使用 shrinkResources 属性来开启资源压缩,它在构建 apk 时可以移除那些没有引用到的资源文件,通常它必须与 minifyEnabled 属性一起使用:

release {
    shrinkResources true
    minifyEnabled true
    proguardFiles getDefaultProguardFile('proguard-android.txt'),
            'proguard-rules.pro'
}

注意的是,开启该属性设置后,它并不会移除 values/ 文件夹中定义的资源,例如:字符串、颜色、样式等等。

使用resConfigs去除多余的语言包

目前很多第三方库内包含了各种语言包,但是大多数情况下我们的应用是不需要国际化,仅仅需要中文的就可以了,所以可以 resConfigs 配置来去掉多余的语言包:

android {
    defaultConfig {
        ...
        resConfigs "zh"
    }
}
去掉Debug信息或者去掉行号

facebook的Dex优化工具:Redex

Dex 分包

facebook的Dex优化工具:Redex

资源压缩

使用AndResGuard工具

AndResGuard 主要对打包后的图片进行压缩,使用7zip压缩方式对图片进行压缩。

AndResGuard Github地址

Tips

  • 使用不带alpha值的jpg图片

对于非透明的大图,jpg将会比png的大小有显著的优势,虽然不是绝对的,但是通常会减小到一半都不止。

  • 使用tinypng有损压缩

在保持alpha通道的情况下对PNG的压缩可以达到1/3之内,而且用肉眼基本上分辨不出压缩的损失。

  • 使用webp格式

webp支持透明度,压缩比比,占用的体积比JPG图片更小。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值