APK瘦身:
1. 减少 Assets 目录下的文件,有的html可以通过接口获取
2. 删除无用so文件,根据CPU引入so文件
3. 压缩图片,使用webp格式下的图片
4.混淆
5.压缩APK
6.打包剔除无用资源
7.动态下载图片
分目录放置图片:
不同分辨率的图片应该放到不同的目录下面,如果放错了图片,对于APP运行时内存大小有一定影响。
如果把一个本来应该放在 drawable-xxhdpi里面的图片放在了 drawable 文件夹中,会出现什么问题呢?
答案:在 xxhdpi 设备上,图片会被放大3倍,图片内存占用就会变为原来的9倍
同一张图片,适配高分辨率肯定比低分辨率的 size 要大。
微信的表情都在hdpi中,仅有一套图片,这种放图策略几乎成为了业界标准。
微信已经实现了 SVG 化,SVG 图片在 Raw 中。
微信倾向于把较大的图片放在 xhdpi 中,UI设计师仅出一套图。
目前阿里和腾讯都是一套图走天下的方案
总结合理使用图片资源:
1. 聊天表情就出一套图,放在 hdpi 中(因为此类图片对于清晰度要求不高)。
2.纯色小 Icon 用 SVG 制作,用矢量图适配所有分辨率。
3.对于背景图等大图,出一套放在 xhdpi 或 xxhdpi 中。
4.Logo 等权重较大的图片可针对 hdpi、xhdpi、xxhdpi 做多套图
5.如果某些图在真机中确实会展现异常,就用多套图适配。
6.如果遇到特殊机型,可针对性的进行补图。
移除 lib 苦衷的配置文件:
// 不加载第三方依赖包的如下文件
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/LICENSE'
exclude 'META-INF/license.txt'
exclude 'META-INF/LGPL2.1'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/notice.txt'
exclude 'META-INF/MANIFEST.MF'
exclude 'META-INF/MANIFEST'
exclude 'META-INF/manifest.mf'
exclude 'project.properties'
exclude 'proguard-project.txt'
exclude 'bin/AndroidManifest.xml'
exclude 'libs/android-support-v4.jar'
exclude 'AndroidManifest.xml'
exclude 'META-INF/rxjava.properties'
}