apk size查看
一张Google官方给出的Apk构建流程
安装包的大致构成
- assets目录
存放一些配置文件、资源文件,assets不会自动生成对应的ID,通过AssetManager类的接口获取。
- lib目录
存放程序依赖的jar、aar、so库
- res目录
res是resource的缩写,存放资源文件,会自动生成对应的ID并映射到.R文件中,通过资源ID使用。
- META-INF 目录
保存应用的签名信息,签名信息可以用来验证APK文件的完整性。
- AndroidManifest.xml
用来描述Android应用的配置信息,一些组件的注册信息、可使用权限等。
- classes.dex
Dalvik 字节码程序,App 打包时通过Android SDK 中的dx工具将java字节码转换为Dalvik 字节码。
- resources.arsc
记录资源文件和资源ID之间的映射关系,用来根据资源ID寻找资源。
App size优化总结
-
优化图片大小,使用As自带工具把png转为webp或者使用 tinyPNG 压缩图片大小压缩效果可以更好 地址:tinypng.com/
-
gradle设置优化
//启用代码混淆, 所有class混淆包括第三方库可以有效减小体积,**第三方直接是包没有源码的可以添加包名不参与混淆**
minifyEnabled true
//国际化控制
resConfigs "zh","en"
// 表示只是用xxhdpi目录下的资源文件
resConfigs "xxhdpi"
//是否优化zip
zipAlignEnabled true
// 移除无用的resource文件
shrinkResources true
//配置需要适配的cpu类型
abiFilters "armeabi-v7a"
-
资源混淆参考微信方案:www.jianshu.com/p/7ffea26c9…
-
其他
- 检查是否引入了重复功能的第三方库(图片加载库,glide,picasso,fresco, Json解析 Gson,fastJson),其他第三方库的裁剪。
- 尝试使用动态加载so库文件,插件化开发。
- 将大资源文件放到服务端,启动后自动下载使用。
- 上线前代码加固等