日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android APP终极瘦身指南

發(fā)布時間:2025/3/15 Android 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android APP终极瘦身指南 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

之前寫了一篇《APK瘦身實踐》側(cè)重于實踐和效果對比,后來受徐川老師點撥,建議改寫成一篇更全面的瘦身終極殺招大全,深以為然,思考良久,新開一篇。

指南條例

第1條:使用一套資源

這是最基本的一條規(guī)則,但非常重要。
對于絕大對數(shù)APP來說,只需要取一套設(shè)計圖就足夠了。鑒于現(xiàn)在分辨率的趨勢,建議取720p的資源,放到xhdpi目錄。
相對于多套資源,只使用720P的一套資源,在視覺上差別不大,很多大公司的產(chǎn)品也是如此,但卻能顯著的減少資源占用大小,順便也能減輕設(shè)計師的出圖工作量了。
注意,這里不是說把不是xhdpi的目錄都刪除,而是強調(diào)保留一套設(shè)計資源就夠了。

第2條:開啟minifyEnabled混淆代碼

在gradle使用minifyEnabled進行Proguard混淆的配置,可大大減小APP大小:

1 2 3 4 5 6 7 android { buildTypes { release { minifyEnabled true } } }

在proguard中,是否保留符號表對APP的大小是有顯著的影響的,可酌情不保留,但是建議盡量保留用于調(diào)試。
詳細proguard的相關(guān)的配置和原理可自行查閱。

第3條:開啟shrinkResources去除無用資源

在gradle使用shrinkResources去除無用資源,效果非常好。

1 2 3 4 5 6 7 android { buildTypes { release { shrinkResources true } } }

第4條:刪除無用的語言資源

大部分應(yīng)用其實并不需要支持幾十種語言的國際化支持。還好強大的gradle支持語言的配置,比如國內(nèi)應(yīng)用只支持中文:

1 2 3 4 5 android { defaultConfig { resConfigs "zh" } }

第5條:使用tinypng有損壓縮

android打包本身會對png進行無損壓縮,所以使用像tinypng這樣的有損壓縮是有必要的。
重點是Tinypng使用智能有損壓縮技術(shù),以盡量少的失真換來圖片大小的銳減,效果非常好,強烈推薦。
Tinypng的官方網(wǎng)站:http://tinypng.com/

第6條:使用jpg格式

如果對于非透明的大圖,jpg將會比png的大小有顯著的優(yōu)勢,雖然不是絕對的,但是通常會減小到一半都不止。
在啟動頁,活動頁等之類的大圖展示區(qū)采用jpg將是非常明智的選擇。

第7條:使用webp格式

webp支持透明度,壓縮比比jpg更高但顯示效果卻不輸于jpg,官方評測quality參數(shù)等于75均衡最佳。
相對于jpg、png,webp作為一種新的圖片格式,限于android的支持情況暫時還沒用在手機端廣泛應(yīng)用起來。從Android 4.0+開始原生支持,但是不支持包含透明度,直到Android 4.2.1+才支持顯示含透明度的webp,使用的時候要特別注意。
官方介紹:https://developers.google.com/speed/webp/docs/precompiled

第8條:縮小大圖

如果經(jīng)過上述步驟之后,你的工程里面還有一些大圖,考慮是否有必要維持這樣的大尺寸,是否能適當?shù)目s小。
事實上,由于設(shè)計師出圖的原因,我們拿到的很多圖片完全可以適當?shù)目s小而對視覺影響是極小的。

第9條:覆蓋第三庫里的大圖

有些第三庫里引用了一些大圖但是實際上并不會被我們用到,就可以考慮用1x1的透明圖片覆蓋。
你可能會有點不舒服,因為你的drawable下竟然包含了一些莫名其妙的名稱的1x1圖片…

第10條:刪除armable-v7包下的so

基本上armable的so也是兼容armable-v7的,armable-v7a的庫會對圖形渲染方面有很大的改進,如果沒有這方面的要求,可以精簡。
這里不排除有極少數(shù)設(shè)備會Crash,可能和不同的so有一定的關(guān)系,請大家務(wù)必測試周全后再發(fā)布。

第11條:刪除x86包下的so

與第十條不同的是,x86包下的so在x86型號的手機是需要的,如果產(chǎn)品沒用這方面的要求也可以精簡。
建議實際工作的配置是只保留armable、armable-x86下的so文件,算是一個折中的方案。

第12條:使用微信資源壓縮打包工具

微信資源壓縮打包工具通過短資源名稱,采用7zip對APP進行極致壓縮實現(xiàn)減小APP的目標,效果非常的好,強烈推薦。
詳情參考:Android資源混淆工具使用說明
原理介紹:安裝包立減1M–微信Android資源混淆打包工具
建議開啟7zip,注意白名單的配置,否則會導致有些資源找不到,粗略配置如下,

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <?xml version="1.0" encoding="UTF-8"?> <resproguard> <!--defaut property to set --> <issue id="property" > <seventzip value= "true" /> <!-- ... --> </issue> <issue id="whitelist" isactive="true"> <path value ="com.xxx.yyy.R.drawable.emoji_*" /> <path value ="com.xxx.yyy.... /> </issue> <issue id ="compress" isactive="true"> <!-- ... --> </issue> </resproguard>

第13條:使用provided編譯

對于一些庫是按照需要動態(tài)的加載,可能在某些版本并不需要,但是代碼又不方便去除否則會編譯不過。
使用provided可以保證代碼編譯通過,但是實際打包中并不引用此第三方庫,實現(xiàn)了控制APP大小的目標。
但是也同時就需要開發(fā)者自己判斷不引用這個第三方庫時就不要執(zhí)行到相關(guān)的代碼,避免APP崩潰。

第14條:使用shape背景

特別是在扁平化盛行的當下,很多純色的漸變的圓角的圖片都可以用shape實現(xiàn),代碼靈活可控,省去了大量的背景圖片。

第15條:使用著色方案

相信你的工程里也有很多selector文件,也有很多相似的圖片只是顏色不同,通過著色方案我們能大大減輕這樣的工作量,減少這樣的文件。
借助于android support庫可實現(xiàn)一個全版本兼容的著色方案,參考代碼:DrawableLess.java

第16條:在線化素材庫

如果你的APP支持素材庫(比如聊天表情庫)的話,考慮在線加載模式,因為往往素材庫都有不小的體積。
這一步需要開發(fā)者實現(xiàn)在線加載,一方面增加代碼的復(fù)雜度,一方面提高了APP的流量消耗,建議酌情選擇。

第17條:避免重復(fù)庫

避免重復(fù)庫看上去是理所當然的,但是秘密總是藏的很深,一定要當心你引用的第三方庫又引用了哪個第三方庫,這就很容易出現(xiàn)功能重復(fù)的庫了,比如使用了兩個圖片加載庫:Glide和Picasso。
通過查看exploded-aar目錄和External Libraries或者反編譯生成的APK,盡量避免重復(fù)庫的大小,減小APP大小。

第18條:使用更小的庫

同樣功能的庫在大小上是不同的,甚至會懸殊很大。
如果并無對某個庫特別需求而又對APP大小有嚴格要求的話,比較這些相同功能第三方庫的大小,選擇更小的庫會減小APP大小。

第19條:支持插件化

過去的一年,插件化技術(shù)雨后春筍一樣的都冒了出來,這些技術(shù)支持動態(tài)的加載代碼和動態(tài)的加載資源,把APP的一部分分離出來了,對于業(yè)務(wù)龐大的項目來說非常有用,極大的分解了APP大小。
因為插件化技術(shù)需要一定的技術(shù)保障和服務(wù)端系統(tǒng)支持,有一定的風險,如無必要(比如一些小型項目,也沒什么擴展業(yè)務(wù))就不需要了,建議酌情選擇。

第20條:精簡功能業(yè)務(wù)

這條完全取決于業(yè)務(wù)需求。
從統(tǒng)計數(shù)據(jù)分析砍掉一些沒用的功能是完全有可能的,甚至干脆去掉一些花哨的功能出個輕聊版、極速版也不是不可以的。

第21條:重復(fù)執(zhí)行第1到20條

多次執(zhí)行上述步驟,你總能發(fā)現(xiàn)一些蛛絲馬跡,這是一個好消息,不是嗎?

在線評估

針對很多朋友的反饋,有必要對條例的適用范圍、易用性和風險指數(shù)做個粗略的評估,匯總?cè)缦?#xff0c;方便大家執(zhí)行。

指南條例 適用范圍 易用性 風險指數(shù) 備注
使用一套資源 非極高UI要求的APP ?
開啟minifyEnabled 全部 ?
開啟shrinkResources 全部 ?
刪除無用的語言資源 非全球國際化應(yīng)用 ?
使用tinypng有損壓縮 非極高UI要求的APP ?
使用jpg格式 僅限非透明大圖 ?
使用webp格式 僅限4.0+,4.2+設(shè)備 ?
縮小大圖 限允許縮小的大圖 ?
覆蓋第三庫里的無用大圖 全部 ?
刪除armable-v7包下的so 限允許對極少數(shù)設(shè)備不兼容 ?
刪除x86包下的so 限允許對x86設(shè)備不兼容 ?
使用微信資源壓縮打包工具 全部 切記要配置白名單
使使用provided編譯 全部 容錯處理
使用shape背景 全部 ?
使用著色方案 全部 ?
表情在線化 限含表情包的APP ?
避免重復(fù)庫 全部 ?
使用更小的庫 全部 ?
支持插件化 限擴展性要求高的APP ?
精簡功能業(yè)務(wù) 限允許精簡的APP

小結(jié)

相信經(jīng)過上述步驟,一定可以把你的Android APP極大的瘦身下去。
考慮到一定的風險性,建議挑選適合自己的方法就行;同時,我也會跟蹤最新的瘦身技巧,及時補充更新。

原文地址: http://jayfeng.com/2016/03/01/Android-APP%E7%BB%88%E6%9E%81%E7%98%A6%E8%BA%AB%E6%8C%87%E5%8D%97/#more

總結(jié)

以上是生活随笔為你收集整理的Android APP终极瘦身指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。