APK文件结构
-
META-INF\(Jar文件中常可以看到)
-
res\(存放资源文件的目录)
-
AndroidManifest.xml(程序全局配置文件)
-
classes.dex(Dalvik字节码)
-
resources.arsc(编译后的二进制资源文件)
AndroidStudio分析APK文件大小
使用AS的Build-Analyze APK
查看APK包内各个文字资源大小
APK瘦身思路
1.图片处理
1)使用一套图
一般市场上使用一套图就能够适应大部分需求,使用720dp分辨率,放置于xhdpi
2)使用TinyPng压缩图片
图片压缩后对视觉影响不大,但体积显著减小
3)使用webp
4)使用jpg替代png
使用jpg替换不需要保留透明区的png
5)使用矢量图
VectorDrawable
AnimatedVectorDrawable
6)使用shape背景
7)使用selector文件
8)使用tintColor
9)使用.9图
2.去除多余资源
1)Andorid Studio Lint
AS的Analyze Run Inspection By Name
输入unused resources查找多余的资源
2)shrinkResources
使用资源缩减器,去除无用资源
buildTypes {
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
复制代码
3)resConfigs
通过resConfig属性指定语言(未指定的语言的任何资源都会被删除)
android {
defaultConfig {
... resConfigs " zh","en"
}
}
复制代码
3.缩小资源AndResGuard
微信资源混淆打包工具AndResGuard
“AndResGuard是一个帮助你缩小APK大小的工具,
他的原理类似Java Proguard,但是只针对资源。
它会将原本冗长的资源路径变短,
例如将res/drawable/wechat变为r/d/a”
4.去除多余包依赖
第三方库里包含了你所需的引用包,则无需额外引入
使用Android Studio查看包依赖
android studio 终端terminal输入
gradlew :Your Module Name:dependencies
复制代码
或者使用
gradlew :Your Module Name:dependencies --configuration compile(或者implementation)
复制代码
可以查看到详细的包依赖关系
5.去除冗余代码
Proguard
ProGuard是一个压缩、优化和混淆Java字节码文件的免费的工具,它可以删除无用的类、字段、方法和属性。
可以删除没用的注释,最大限度地优化字节码文件。
它还可以使用简短的无意义的名称来重命名已经存在的类、字段、方法和属性。
buildTypes {
release {
minifyEnabled true //开启混淆
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'//混淆配置文件
}
}
复制代码
6.APK分割splits
android {
...
splits {
density {
enable true //打开apk分割功能
exclude "ldpi", "tvdpi", "xxxhdpi" //exclude排除
compatibleScreens 'small', 'normal', 'large', 'xlarge' //将注入到mainfest配置compatible-screens中
}
abi {
enable true
reset() //重置列表,与include搭配使用,指定生成include包含的apk
include 'x86', 'armeabi-v7a', 'mips' //include包括
universalApk false // 不打包一个通用版本(包含所有的ABI)
}
}
复制代码
7.在线资源&H5
在线资源替代本地资源或者使用h5
--------------我是快乐的分割线--------------
以上就是今天TIP的内容了
愿你的APK瘦瘦瘦,愿你的身材棒棒棒~
本人公众号 不定期更新 欢迎关注与建议