Android App體積優(yōu)化篇

最近在進(jìn)行App包的體積優(yōu)化覺得有點(diǎn)意義于是想記錄下來分享給大家

需求是這樣的:最近項(xiàng)目在進(jìn)行但是有客戶以及產(chǎn)品提出App的體積過大安裝包.apk 達(dá)到了73.5M的體積猴蹂,提出要減小體積悄窃。一開始是想抽點(diǎn)點(diǎn)時(shí)間來進(jìn)行這個需求不想花太多時(shí)間慰于,開會的時(shí)候召集IOS工程師以及Android工程師一起提了幾個思路包括:

  • 1.查看無用的第三方庫;
  • 2.查看無用的圖片;
  • 3.查看是否有過大的圖片;

因?yàn)锳pp經(jīng)過了幾波開發(fā)和設(shè)計(jì)所以可能里面會有些亂怜俐,先讓工程師先去查找并且報(bào)上來,隔了2天左右報(bào)上來的Android 這邊沒有無用的第三方庫邓尤,無用圖片已經(jīng)去掉拍鲤,似乎沒有過大的圖片,整體體積優(yōu)化幾M都不到后來趕項(xiàng)目就做項(xiàng)目去了沒有繼續(xù)跟蹤汞扎,但是最近又提到了體積大的問題這次我決定自己去看個究竟季稳。

我的思路比原來多了一點(diǎn):

  • 0.查看是否有無用的資源;
  • 1.查看無用的第三方庫澈魄;
  • 2.查看無用的圖片景鼠;
  • 3.查看是否有過大的圖片;

我和工程師方向不同他們是從開發(fā)項(xiàng)目入手痹扇,我打算從release包入手這樣才能真正分析過大的原因铛漓,分析release包兩種方案:利用Android studio就可以很方便分析還可以查看下載大小的情況;可以手動解壓縮查看里面的文件夾鲫构,我兩種都用了于是拿了一個release包來下手看看情況浓恶,首先不用說了下載解壓,查看App各個文件夾的情況结笨,發(fā)現(xiàn)了如下幾個情況:

  1. assets文件夾里面有個fonts的字體文件體積非常大(大約14M)然后我又去項(xiàng)目中搜了下引用這個字體的class類找到了包晰,但是這個引用的class類居然沒有被其他引用最后讓工程師叫過來詢問說是以前需求要求改變字體但是后來需求取消了湿镀,于是找到了第一條大的

  2. 進(jìn)入lib文件夾里面這個文件夾體積最大很多so的庫在里面先按照體積排一個序,發(fā)現(xiàn)最大的是叫做libhyphenate_av.so的庫在arm64-v8a 文件夾里面有7.1M伐憾,在armeabi-v7a里面也有個4.5M 非常大于是先從這個入手詢問了新相關(guān)開發(fā)的工程師這個庫是集成的一個聊天的庫他覺得沒問題勉痴,但是我又發(fā)現(xiàn)了一個名字叫l(wèi)ibhyphenate.so的庫(體積排名不靠前但是還是被我發(fā)現(xiàn)了,這個庫arm64-v8a里面只有2.6M树肃,armeabi-v7a只有1.6M)另其查詢發(fā)現(xiàn)_av.so的庫是個帶音視頻的功能更強(qiáng)大蒸矛,但是我們只用到了最基本的功能因此是不需要的,馬上去掉編譯運(yùn)行看看效果果然可以運(yùn)行胸嘴,說明了導(dǎo)入第三方庫的時(shí)候要搞清楚需求以及庫的作用雏掠,又給我抓到一個大魚

  3. 最后是res文件夾這個里面體積也大主要是圖片多,分為hdpi xxhdpi xxxhdpi主要是三類打開最大的xxxhdpi查看依然是排序查看筛谚,居然一個開機(jī)啟動圖片達(dá)到了1.9M也太大了而且只是這一個文件夾其他的文件夾估計(jì)也大,查找到了幾個大于幾百K的圖片這些是肯定要改的停忿,剩下的很多200多K-20K的圖片咋一開始覺得沒問題驾讲,但是查看幾個以后發(fā)現(xiàn)還是有問題因?yàn)橛行﹫D片按鈕,小ICON的體積達(dá)到了20-30K以經(jīng)驗(yàn)來看覺得是有問題的席赂,一般來說大廠的會在幾K左右吮铭,于是我下載了幾個大廠的.apk下來,讓UI一起過來解壓看看里面類似的圖片體積颅停,翻了好幾個文件夾果不其然他們類似的圖片比我們要小得多谓晌,于是和UI溝通UI說圖片是sketch直接弄出來的當(dāng)時(shí)沒有發(fā)現(xiàn)很大對比才知道需要用PS去修改下尺寸以及體積,最后把圖片大于5K的圖片都交給UI去檢查修改癞揉,這次圖片文件夾體積估計(jì)能減小將近一半左右纸肉,
    PS:另外Android圖片的體積優(yōu)化如果不夠還可以用Android Studio自帶的工具進(jìn)行優(yōu)化(我個人覺得首先要UI先解決本身的問題,再利用這個工具進(jìn)行壓縮而不是一開始就用這個工具進(jìn)行壓縮)喊熟,大概原理就是利用支持的WebP的格式進(jìn)行優(yōu)化具體操作如下柏肪,最后面要強(qiáng)調(diào)的圖片也要仔細(xì)檢查因?yàn)橛行﹫D片是第三方庫使用的,像這些圖片可以先不動優(yōu)先處理自己App的圖片
    http://www.reibang.com/p/e388520a9edc

  4. 移除無用的資源還是利用Android Studio的自帶工具進(jìn)行點(diǎn)擊AS上的Analyze菜單按鈕芥牌,選擇Run Inspection by Name烦味,會出現(xiàn)一個彈窗, 輸入unused resources壁拉,會彈出“inspaction scope”選擇窗口谬俄,選擇檢查的范圍,一般選擇整個項(xiàng)目或模塊弃理±B郏“inspaction scope”窗口下面還可以設(shè)置文件過濾,選擇好后點(diǎn)ok就開始檢查了痘昌,如果資源文件是通過反射機(jī)制調(diào)用的蔬芥,Lint是無法知道的梆靖,所以使用lint檢查出的每一個資源都需要人工進(jìn)行確認(rèn),防止發(fā)生異常刪除笔诵,
    PS:Gradle構(gòu)建系統(tǒng)支持自動移除無用的資源返吻,只需要在你的Gradle配置文件中加入minifyEnabled true shrinkResources true 但是搜索以后發(fā)現(xiàn)這個其實(shí)還是有問題的因?yàn)橛行﹫D片是被動態(tài)加載的這句指令會影響整體運(yùn)行所以不太推薦

  5. 移除低配置手機(jī)的.so庫(其實(shí)是第四點(diǎn)的補(bǔ)充),說白了就是移除armabi里面的庫乎婿,因?yàn)閍rmabi指的是armV5指令集的手機(jī)测僵,應(yīng)該是比較老的一類了當(dāng)然有些App為了全面性還是支持的,但是我們做的是智能家居產(chǎn)品的App所以應(yīng)該可以去掉谢翎,去掉的時(shí)候要注意些細(xì)節(jié)就是要進(jìn)去對比下armeabi捍靠,armeabi-v7a,arm64-v8a這三個文件夾要確定armeabi里面的庫armeabi-v7a森逮,arm64-v8a對應(yīng)都有才行榨婆,比如我就遇到了有一個庫在armeabi里面而不再armeabi-v7a里面,我就把這個庫拷貝到了armeabi-v7a里面褒侧,然后在gradle里面的配置去掉armeabi選項(xiàng)不編譯即可

“四大板斧” 下來整體優(yōu)化下來App體積從原來release包的73.5M優(yōu)化到了45M左右良风,整體效果非常明顯,其實(shí)App體積優(yōu)化主要還是細(xì)心加耐心但是細(xì)想一下好像開發(fā)好像也是如此闷供,其他行業(yè)也都大抵如此烟央。

嗯,嗯···

(PS:如果想看 IOS App體積優(yōu)化篇 的出門左轉(zhuǎn)即可)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末歪脏,一起剝皮案震驚了整個濱河市疑俭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌婿失,老刑警劉巖钞艇,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異豪硅,居然都是意外死亡香璃,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進(jìn)店門舟误,熙熙樓的掌柜王于貴愁眉苦臉地迎上來葡秒,“玉大人,你說我怎么就攤上這事嵌溢∶心粒” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵赖草,是天一觀的道長学少。 經(jīng)常有香客問我,道長秧骑,這世上最難降的妖魔是什么版确? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任扣囊,我火速辦了婚禮,結(jié)果婚禮上绒疗,老公的妹妹穿的比我還像新娘侵歇。我一直安慰自己,他們只是感情好吓蘑,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布惕虑。 她就那樣靜靜地躺著,像睡著了一般磨镶。 火紅的嫁衣襯著肌膚如雪溃蔫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天琳猫,我揣著相機(jī)與錄音伟叛,去河邊找鬼。 笑死脐嫂,一個胖子當(dāng)著我的面吹牛统刮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播雹锣,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼网沾,長吁一口氣:“原來是場噩夢啊……” “哼癞蚕!你這毒婦竟也來了蕊爵?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤桦山,失蹤者是張志新(化名)和其女友劉穎攒射,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恒水,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡会放,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了钉凌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咧最。...
    茶點(diǎn)故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖御雕,靈堂內(nèi)的尸體忽然破棺而出矢沿,到底是詐尸還是另有隱情,我是刑警寧澤酸纲,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布捣鲸,位于F島的核電站,受9級特大地震影響闽坡,放射性物質(zhì)發(fā)生泄漏栽惶。R本人自食惡果不足惜愁溜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望外厂。 院中可真熱鬧冕象,春花似錦、人聲如沸酣衷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽穿仪。三九已至席爽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間啊片,已是汗流浹背只锻。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留紫谷,地道東北人齐饮。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像笤昨,于是被迫代替她去往敵國和親祖驱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評論 2 355