- 代码混淆
proguard混淆
压缩,Shrink,去除代码无用的类,字段,方法。
优化,Optimize,优化字节码,移除无用指令。
混淆,Obfuscate,类,方法,字段重命名abc。
在gradle设置minifyEnabled开启混淆,删除无用代码,shrinkResources,删除无用资源,proguardFiles,混淆的配置文件,android默认文件和自定义文件。
混淆可以减小apk大小。
- 第三方开源包的使用,避免重复。
选择何时的第三方库,避免功能重复的库使用,如使用多个图片加载库会导致功能重复,选择最适合业务的,如果部分不满足,在一个库的基础上扩展,而不是都引入。也可以裁剪不用的功能,将有用的代码加到项目中来,避免引用整一个第三方库。
- 图片Webp格式
Google开发的新图片格式,压缩效率高于png和jpeg,占用资源较小,Andoid4.0支持有损WebP图像,若无损透明需要minSdkVersion在18及以上支持,AndroidStudio提供功能可以直接转换。
- 第三方tinypng进行png图片的压缩。
- 非透明大图jpg优化
使用jpg代替png格式,没有透明度信息,jpg有损压缩,占内存小。png无损,占用空间大。一般会小一半,在闪屏页,全图背景时使用。
- 图片资源文件重复
在适配时,往往准备几套图片资源,严重影响Apk大小,尽量使用一套图片,一套布局,多个dimens文件,针对分辨率差异过大的一些图片特殊处理,去除一些内置图片,尽量从服务端取。
- Android Lint删除冗余资源
Lint工具扫描未使用的资源,通过Run Inspection by Name,扫描整个工程的Unused resources,扫描后直接删除无用资源,不包括asset目录。
- 只支持配置arm-v7架构的so库
该架构能支持大部分移动手机设备。
- 插件化
将一些业务插件apk放在服务器,使用时下载或启动预加载,可以减小安装包的大小。
任重而道远