- Proguard
混淆文件中申明相关的不需要的类直接不参与编译,以及相关的瘦身优化等 - Vector Drawables
在Android5.0之后,支持直接通过<vector>标签去定义矢量图,既省了空间,又可以适配不同的屏幕达到不失真,我们可以直接从网上下载相应的SVG图片,然后利用Vector asset studio去根据图片生成矢量图,具体我们可以看下这个哥们如何去使用的
http://www.jianshu.com/p/456df1434739 - apk splits
在gradle文件中添加相应的配置文件来对输出的apk进行拆分
android {
...
splits {
density {
enable true
exclude 'ldpi', 'tvdpi', 'xxxhdpi'
//alternatively use the following two lines to only include:
// reset()
// include 'mdpi', 'hdpi', 'xhdpi', 'xxhdpi'
compatibleScreens 'small', 'normal', 'large', 'xlarge'
}
}
}
上面是对不同的分辨率进行拆分
enable: 启用屏幕密度拆分机制
exclude: 默认情况下所有屏幕密度都包括在内,你可以移除一些密度。
include: 表示要包括哪些屏幕密度
reset(): 重置屏幕密度列表为只包含一个空字符串 (这能够实现,在与include一起使用时可以表示使用哪一个屏幕密度,而不是要忽略哪一些屏幕密度)
compatibleScreens:表示兼容屏幕的列表。这将会注入到manifest中匹配的 <compatible-screens> <screen> 节点。这个设置是可选的。
按照分辨率可想而知是对图片进行拆分,我们现在可以使用矢量图去解决这个问题
也可以按照ABI来进行拆分:
android {
...
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a', 'mips'
universalApk true
}
}
}
enable: 启用ABI拆分机制
exclude: 默认情况下所有ABI都包括在内,你可以移除一些ABI。
include:指明要包含哪些ABI
reset():重置ABI列表为只包含一个空字符串(这可以实现,在与include一起使用来可以表示要使用哪一个ABI,而不是要忽略哪一些ABI)
universalApk:指示是否打包一个通用版本(包含所有的ABI)。默认值为 false。
- 图片的优化
我们可以使用trimage或者Optipng等工具对图片文件进行无损压缩
并且尽量不要使用jpeg格式的图片,可以更多的使用.9图片 - Lint
使用lint去检索出来unused resource,然后视情况进行删除
检测出duplicated 东西,删除多余的重复的方法定义或者是assets等东西 - 删除所有的debug的相关东西
- reuse resource
只要有可能就重复的使用你的资源,换句话说就是尽量把重复的东西抽出来当成公共的使用 - 尽量使用推荐的媒体格式
图片 png 音频 aac 视频 h264avc