APK瘦身

  • 图片资源的优化
  • 资源压缩
  • 其他优化

图片资源优化

图片选择顺序
  1. VD:使用矢量图片例如:SVG格式的,不管适配什么屏幕,只需要一份图片即可
  2. WebP:WebP体积更小,4.2.1+支持透明度
  3. PNG:有透明度,渐变,阴影的情况下选择png
  4. JPG:
WebP转换方式

Android Studio 选中图片-右键 -convert to webp 即可

在这里插入图片描述
如果图片比较多,就采用工具批量转换

  • 下载WebP转换工具,进行图片统一压缩
  • https://developers.google.com/speed/webp/docs/precompiled
PNG压缩

如果项目是Android 4.2.1版本以后的,用webP 即可,不需要使用png了。如果项目是4.2.1之前的。不能使用WebP的话那就对PNG进行压缩。
采用压缩工具对png进行压缩

  • 可以采用ImageOptim或者Pngyu对png进行压缩
  • AAPT会使用内置的压缩算法来优化res/drawable/目录下的PNG图片,但也可能会导致本来已经优化过的图片体积变大,这里禁用aapt优化png图片
aaptOptions {
	cruncherEnabled = false
}
其他图片优化
  • 纯色图片代码实现
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="5dp"/>
    <solid android:color="#ff0000"/>

</shape>

  • 减少图片资源防治份数
    放置xhdpi,xxhdpi 如果只放一份会有什么问题?
  • 能用代码实现的图片尽量采用代码实现
    圆形图片,环形,渐变等都可以采用代码实现

开启资源压缩

开启代码混淆与去除无用资源

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

其他优化

  • 冗余代码的优化
    什么是冗余代码:
    1、完全一致的代码或者只修改来空格和评论
    2、结构上和句法上一致的代码,例如只是修改来变量名
    3、插入和删除了部分代码
    4、功能和逻辑上一致的代码,语义上的拷贝
  • 冗余代码的检测
    1、使用工具,例如PMD
    2、PMD下载地址:https://pmd.github.io/

Lint Android最常用的一个优化

  • 未使用资源
    1、检测未使用资源并删除
    2、Android Studio -> Analyze -> Run inspection by Name ->(输入)unused resource
  • 无用代码优化
    Android Studio -> Analyze -> Run inspection by Name -> unused declaration -> Moudule app -> OK
  • 其他的Lint优化,可优化内容很多可以多了解一下

语言资源优化

  • 在build配置中配置resConfigs指定需要的语言类型
defaultConfig {
        resConfigs "zh","en"
}

其他优化

  • 重复String ,color优化
  • 减少Enum使用
    每减少一个Enum文件可以减少1k左右的大小
    采用常量定义
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值