正文
概述
apk瘦身作为优化的一部分,它的大小决定安装的时间与占用的内存,进行针对性的瘦身也能够提高用户体验,下面就看我怎样将一个27.7M的安装包减肥到17.5M,足足减少了37.18%。
一、优化图片
图片占用了大部分体积,所以图片的优化首当其冲。
我使用的是
TinyPng
在线压缩工具,压缩前主要图片的大小(10.5M):
接下来我使用
iSparta
软件将一部分图片转为web格式,.9图片我转出来后as报错,暂时还没有去找解决方案,知道的伙伴可以留言指导一下哦,来看看压缩后的大小(2.68M):
效果是不是很可观啊,而且压缩后的图片质量也很好,完全满足应用所需的质量要求,项目中一些简单的图片也可以使用SVG矢量图;
二、优化无用资源
通过lint删除没有用过的资源: 选择inspect code…
然后我选择的是分析app,点击ok:
接下来就处理没有用到的资源了:
三、使用微信AndResGuard优化资源
在project的gradle中添加依赖:
//微信资源混淆工具
classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.10'
在app的gradle中添加配置:
apply plugin: 'AndResGuard'
andResGuard {
// mappingFile = file("./resource_mapping.txt")
mappingFile = null
use7zip = true
useSign = true
// it will keep the origin path of your resources when it's true
keepRoot = false
//白名单,不混淆的资源
whiteList = [
// your icon
"R.drawable.icon",
// for fabric
"R.string.com.crashlytics.*",
// for google-services
"R.string.google_app_id",
"R.string.gcm_defaultSenderId",
"R.string.default_web_client_id",
"R.string.ga_trackingId",
"R.string.firebase_database_url",
"R.string.google_api_key",
"R.string.google_crash_reporting_api_key"
]
compressFilePattern = [
"*.png",
"*.jpg",
"*.jpeg",
"*.webp",
"*.gif",
"resources.arsc"
]
sevenzip {
artifact = 'com.tencent.mm:SevenZip:1.2.10'
//path = "/usr/local/bin/7za"
}
}
AndResGuard优化使用了
7zzip
工具。
配置好之后在as右侧的gradle选项中会出现andresguard的task:
我们可以选择需要打包的apk类型进行优化;
看一下task流程:
最后一步就是在优化资源文件啦,优化之后是啥样的姑娘呢,瞧瞧去…
图片的路径变成了r/a5/…了;
优化前安装包大小:
优化后安装包大小:
减少了10.2M,还算不错吧;
四、总结
优化工作到此告一段段落,还可以优化的地方还有,需要在工作中一步一步来,就这样吧!下午茶去了......