概述:
对于大部分用户来说,当看到应用商店陈列着那些一个个应用的时候,会去挑选些Apk体积相对比较小的app下载,因为这样会节省他们的流量消耗、下载时间、手机存储空间。
个人经验总结:
图片的处理:
1、只需要支持hdpi、xhdpi、xxhdpi:
因为目前这三种分辨率占据了80%,对于低分辨率我们完全可以交给Android系统来处理,对于xxxhdpi是为了适应未来而存在的,现在还未普及,对于个别的图片我们可以单独处理。
2、有些简单的图形、背景,可以通过简单的编程做出来的,像分割线、圆角、纯色的背景等,例如shape。
3、使用Android Studio工具
Lint工具可以检测项目中没有用到的资源文件,但是对于通过反射调用的图片无法过滤,需要我们手动排除
Android studio 使用方法:Analyze->Inspect Code
Android Studio的Gradle构建系统支持自动移除无用的资源,基本配置如下:
android {
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
4、对于不带透明度的图片,可以利用tinypng压缩
tinypng可以实现在无损压缩的情况下图片文件大小缩小到原来的30%-50%。
tinypng的缺点是在压缩某些带有过渡效果(带alpha值)的图片时,图片会失真,这种图片可以将png图片转换为下面介绍的webP格式,可以在保证图片质量的前提下大幅缩小图片的大小。
5、使用webp格式图片
在项目中为了减少apk的大小,将一部分图片资源全部转换成webp格式的图片,果然容量少了很多,不过webp格式在android系统版本中,只有4.0之后的才会默认支持,也就是说你将webp格式的图片放在drawable资源下R.java 文件会产生对于的int 标识号,让你在代码中可以通过resource进行使用,比如说给imagview设置图片等。
代码处理:
随着在项目的开发过程中,死代码和重复代码将会越来越多。
1、 去除无用导包
Android Stuido中的快捷键ctrl+alt+o,进行无用包清理。
2、 利用Proguard进行混淆并压缩
ProGuard是一个混淆代码的开源项目。它的主要作用就是混淆,当然它还能对字节码进行缩减体积、优化等,
ProGuard也会重命名你的类属性,类和接口,然整个代码尽可能地保持轻量级水平.
3、 重复代码
对于重复代码可以提取出一个方法,或者提取出一个公共的抽象父类。
后续继续更新........................