一 取劫、包大小分析
在Android Studio工具欄里匆笤,打開build–>Analyze APK, 選擇要分析的APK包
以看到占用空間的主要是代碼、圖片谱邪、資源和lib和assert文件炮捧,主要方向精簡代碼、壓縮圖片虾标、去除無用的庫寓盗、減少asserts里面文件。
二璧函、開啟shrinkResources去除無用資源
使用前:
比較前后少了0.8M
三傀蚌、清理無用資源
在Android Studio工具欄里,打開Refactor–>Remove UnUsed Resources
四蘸吓、刪除無用的語言資源
五善炫、使用tinypng有損壓縮
TinyPNG工具只支持上傳PNG圖片到官網上壓縮,然后下載保存库继,在保持alpha通道的情況下對PNG的壓縮可以達到1/3之內箩艺,而且用肉眼基本上分辨不出壓縮的損失.Tinypng的官方網站:http://tinypng.com/
六、使用jpg格式
如果對于非透明的大圖宪萄,jpg將會比png的大小有顯著的優(yōu)勢艺谆,雖然不是絕對的,但是通常會減小到一半都不止拜英。在啟動頁静汤,活動頁等之類的大圖展示區(qū)采用jpg將是非常明智的選擇。
七、覆蓋第三庫里的大圖
有些第三庫里引用了一些大圖但是實際上并不會被我們用到虫给,就可以考慮用1x1的透明圖片覆蓋藤抡。你可能會有點不舒服,因為你的drawable下竟然包含了一些莫名其妙的名稱的1x1圖片…
八抹估、精簡so
刪除armable-v7包下的so
基本上armable的so也是兼容armable-v7的缠黍,armable-v7a的庫會對圖形渲染方面有很大的改進,如果沒有這方面的要求药蜻,可以精簡瓷式。
這里不排除有極少數(shù)設備會Crash,可能和不同的so有一定的關系谷暮,請大家務必測試周全后再發(fā)布蒿往。
刪除x86包下的so
與第十條不同的是,x86包下的so在x86型號的手機是需要的湿弦,如果產品沒用這方面的要求也可以精簡。
建議實際工作的配置是只保留armable腾夯、armable-x86下的so文件颊埃,算是一個折中的方案。
九蝶俱、使用shape背景
特別是在扁平化盛行的當下班利,很多純色的漸變的圓角的圖片都可以用shape實現(xiàn),代碼靈活可控榨呆,省去了大量的背景圖片
十 罗标、使用著色方案
相信你的工程里也有很多selector文件,也有很多相似的圖片只是顏色不同积蜻,通過著色方案我們能大大減輕這樣的工作量闯割,減少這樣的文件
mutate未起作用,所以加載了兩遍
十一竿拆、避免重復庫
避免重復庫看上去是理所當然的宙拉,但是秘密總是藏的很深,一定要當心你引用的第三方庫又引用了哪個第三方庫丙笋,這就很容易出現(xiàn)功能重復的庫了谢澈,比如使用了兩個圖片加載庫:Glide和Picasso。
十二御板、清理第三方庫和冗余代碼
? ? 版本迭代過程中锥忿,因為刪減功能經常有冗余代碼和第三方庫留下,這或多或少都會增加包體怠肋,這種情況沒有捷徑敬鬓,只能每個文件查找,這是苦力活。還有要查看第三方庫有沒可能精簡列林,比如谷歌分基礎瑞你、廣告和分析包,網絡庫希痴、supportv4等者甲,這個就具體情況具體分析。
十三 砌创、使用 微信 打包工具 AndResGuard
? ? ?執(zhí)行 ?gradlew resguardRelease 命令后比較?
? ? ?前后相差1.5M,效果還是很明顯的虏缸。