这是我参加更文应战的第3天,活动详情检查:更文应战
一:Analyze APK检查各目录巨细
在Android Studio里双击APK即可检查APK里各资源的状况
文件/目录 | 描绘 |
---|---|
lib | 寄存对应CPU架构的so库,有armeabi、armeabi-v7a、arm64-v8a、X86、x86_64 等;其间armeabi-v7a 和 arm64-v8a 是干流渠道 |
res | 寄存资源文件,如布局和图片等 |
assets | 寄存能够经过AssetManager获取的资源 |
class.dex | .java-》.class-》.dex,dex文件是能被Dalvik/ART 虚拟机了解的格式文件 |
resources.arsc | 资源映射表,包含了res/value目录下一切配置的xml内容。依据R.java中记载的id,能够在resources.arsc中找到对应资源的位置 |
其他 |
优化数据参考(不同运用效果不一样)
状态 | 巨细 | 备注 |
---|---|---|
未优化前 | 79.7 MB | |
图片紧缩,多余资源铲除,代码紧缩 | 69.8MB | |
图片紧缩,多余资源铲除,代码不紧缩 | 71.5MB | |
图片紧缩 | 72.2 MB | 只紧缩了一部分图片及移除字体 |
二、图片优化
1: 图片紧缩 tinify.cn/ 能有效降低图片巨细却看不大出来失真
2: 图片格式更换成webp,svg能够更小 .png > .jpg > .webp > .svg
Android Studio创立svg icon
Android Studio将图片转换成webp
对通明通道没有要求的高保真大图要存储到磁盘的图片,优先运用 jpg一般 UI 给咱们的都是 jpg 或 png 格式,如果是一些普通图标切图的话就运用 png如果有用到网络传输且图片比较大的场景,比方和服务器通讯获取网络图片,优先运用 webp,其次是 png图片体积小要求不高的纯色小图标能够运用 svg
3: 一些图片能够放到网络上加载
4: 用一套图片资源,如xhdpi或xxhdpi,针对性做差异化适配
三、沉冗资源优化
1: 右键 -> Refractor -> Remove Unused Resources -> preview,预览找到冗余的资源,可一键去除冗余资源
2: 手动分析冗余资源的操作, Code -> Analyze Code -> Run Inspection by Name… -> unused resources -> Whole Project
3: build.gradle 配置文件中将shrinkResources true,在打包的时分会主动铲除掉冗余的资源;这儿的铲除并不是删除资源文件,而是将资源内的数据除掉
注:上述方法如代码中存在动态、反射加载资源的时分,会导致资源误删的状况
能够新增res/raw/keep.xml文件,在里面把需求保存的资源文件列举出
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@drawable/xxx"/>
4: 能够经过 resConfigs 配置运用哪些言语,从而让构建工具移除指定言语之外的一切资源
android {
defaultConfig {
resConfigs "zh-rCN"
}
flavorDimensions "default"
productFlavors {
huawei {
resConfigs "zh-rCN"
}
}
}
android {
defaultConfig {
resConfigs "zh-rCN", "xhdpi" // 只需求中文字符串、xhdpi 目录下的资源
}
flavorDimensions "default"
productFlavors {
huawei {
resConfigs "zh-rCN", "mdpi" // 只需求中文字符串、mdpi 目录下的资源
}
}
}
四、代码紧缩:
minifyEnabled true敞开代码混杂及紧缩
五、SO优化:
1: 只保存指定渠道CPU架构的so
android {
defaultConfig {
ndk {
abiFilters "armeabi-v7a"
}
}
}
2: 经过网络下载,经过插件化的方法将下载的so正常装载运用