Apk瘦身优化

来源:互联网 发布:获取淘宝客服地址 编辑:程序博客网 时间:2024/04/29 19:27

概述:


对于大部分用户来说,当看到应用商店陈列着那些一个个应用的时候,会去挑选些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、 重复代码

对于重复代码可以提取出一个方法,或者提取出一个公共的抽象父类。


后续继续更新........................

0 0