安卓優化之apk瘦身(27.7M-->17.5M)
阿新 • • 發佈:2019-02-08
概述
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,還算不錯吧;
四、總結
優化工作到此告一段段落,還可以優化的地方還有,需要在工作中一步一步來,就這樣吧!下午茶去了......