Android性能優(yōu)化篇之安裝包優(yōu)化

image

引言

1. Android性能優(yōu)化篇之內(nèi)存優(yōu)化--內(nèi)存泄漏

2.Android性能優(yōu)化篇之內(nèi)存優(yōu)化--內(nèi)存優(yōu)化分析工具

3.Android性能優(yōu)化篇之UI渲染性能優(yōu)化

4.Android性能優(yōu)化篇之計(jì)算性能優(yōu)化

5.Android性能優(yōu)化篇之電量優(yōu)化(1)——電量消耗分析

6.Android性能優(yōu)化篇之電量優(yōu)化(2)

7.Android性能優(yōu)化篇之網(wǎng)絡(luò)優(yōu)化

8.Android性能優(yōu)化篇之Bitmap優(yōu)化

9.Android性能優(yōu)化篇之圖片壓縮優(yōu)化

10.Android性能優(yōu)化篇之多線程并發(fā)優(yōu)化

11.Android性能優(yōu)化篇之?dāng)?shù)據(jù)傳輸效率優(yōu)化

12.Android性能優(yōu)化篇之程序啟動時間性能優(yōu)化

13.Android性能優(yōu)化篇之安裝包性能優(yōu)化

14.Android性能優(yōu)化篇之服務(wù)優(yōu)化

介紹

安裝包優(yōu)化的主要方向就是APP瘦身华望,那么App瘦身帶來哪些好處呢奄侠?
(1).下載時省流量
(2).用戶好的體驗(yàn)先誉,下載更快,安裝更快

下面給出一些常用的優(yōu)化建議

1.清理無用資源

在我們應(yīng)用版本的迭代中渡紫,肯定有廢棄的代碼和資源峰档,我們要及時地清理,來減小App體積症杏,下面給出幾種清理的方法训措。

(1).使用Refactor->Remove unused Resource

這個一鍵清除的小功能不是特別的又用伪节,因?yàn)橘Y源是經(jīng)過反射或字符拼接等方式獲取,所以檢查不完全绩鸣,需要我們不斷的實(shí)驗(yàn)架馋。


image2.png
(2).使用Lint工具

lint工具還是很有用的,它給我我們需要優(yōu)化的電全闷,這個在介紹工具的文章已經(jīng)講過叉寂,下面我只給出需要注意的點(diǎn):

  • 檢測沒有用的布局并且刪除
  • 把未使用到的資源刪除
  • 建議String.xml有一些沒有用到的字符也刪除掉
(3).開啟shrinkResources去除無用資源

在build.gradle 里面配置shrinkResources true,在打包的時候會自動清除掉無用的資源总珠,但經(jīng)過實(shí)驗(yàn)發(fā)現(xiàn)打出的包并不會屏鳍,而是會把部分無用資源用更小的東西代替掉。注意局服,這里的“無用”是指調(diào)用圖片的所有父級函數(shù)最終是廢棄代碼钓瞭,而shrinkResources true 只能去除沒有任何父函數(shù)調(diào)用的情況.

    android {
        buildTypes {
            release {
                shrinkResources true
            }
        }
    }
(4).刪除無用的語言資源

大部分應(yīng)用其實(shí)并不需要支持幾十種語言的國際化支持。比如我們只是保存中文支持:

    android {
        defaultConfig {
            resConfigs "zh"
        }
    }
(5).清理第三方庫中冗余代碼

對于第三方庫淫奔,可能我們只是用到庫中的一個功能山涡,那么我們就可以導(dǎo)入源碼,并且刪除無關(guān)的代碼唆迁,來減小體積鸭丛。

2.圖片資源優(yōu)化

圖片是占用空間比較大的資源,這是我們要重點(diǎn)優(yōu)化的地方唐责。

(1).使用壓縮過的圖片

這個在前面關(guān)于圖片壓縮已經(jīng)講過鳞溉,這里就不再累贅。

(2).只用一套圖片

對于絕大對數(shù)APP來說鼠哥,只需要取一套設(shè)計(jì)圖就足夠了熟菲。從內(nèi)存占用和適配的角度考慮,這一套圖建議放在xhdpi文件夾下朴恳;

(3).使用不帶alpha值的jpg圖片

對于非透明的大圖抄罕,jpg將會比png的大小有顯著的優(yōu)勢,雖然不是絕對的于颖,但是通常會減小到一半都不止呆贿。

(4).使用tinypng有損壓縮

支持上傳PNG圖片到官網(wǎng)上壓縮,然后下載保存恍飘,在保持alpha通道的情況下對PNG的壓縮可以達(dá)到1/3之內(nèi)榨崩,而且用肉眼基本上分辨不出壓縮的損失.

(5).使用webp格式

webp支持透明度,壓縮比比jpg更高但顯示效果卻不輸于jpg,從Android 4.0+開始原生支持章母,但是不支持包含透明度母蛛,直到Android 4.2.1+才支持顯示含透明度的webp,使用的時候要特別注意乳怎。

(6).使用svg

矢量圖是由點(diǎn)與線組成,和位圖不一樣,它再放大也能保持清晰度彩郊,而且使用矢量圖比位圖設(shè)計(jì)方案能節(jié)約30~40%的空間,現(xiàn)在谷歌一直在強(qiáng)調(diào)扁平化方式蚪缀,矢量圖可很好的契合該設(shè)計(jì)理念秫逝。

  • 占用存儲空間小
  • 無極拉伸不會出現(xiàn)鋸齒,可以照顧不同尺寸的機(jī)型
  • Android Studio自帶很多資源
(7).使用shape

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

(8).使用著色方案

相信你的工程里也有很多selector文件刷后,也有很多相似的圖片只是顏色不同,通過著色方案我們能大大減輕這樣的工作量渊抄,減少這樣的文件尝胆。

(9).對打包后的圖片進(jìn)行壓縮

使用7zip壓縮方式對圖片進(jìn)行壓縮,建議使用微信的AndResGuard

3.資源動態(tài)加載

資源可以動態(tài)加載,減小apk體積护桦。

(1).在線化素材庫

如果你的APP支持素材庫(比如聊天表情庫)的話含衔,考慮在線加載模式,因?yàn)橥夭膸於加胁恍〉捏w積

(2).皮膚加載

有的app用到皮膚庫二庵,這是就可以使用動態(tài)加載贪染。

(3).模塊插件化

如果模塊過得,apk體積過大催享,可以考慮插件化抑进,來減少體積。

4.lib庫優(yōu)化

只提供對主流架構(gòu)的支持睡陪,比如arm寺渗,對于mips和x86架構(gòu)可以考慮不支持,這樣可以大大減小APK的體積.

5.7zip壓縮資源

對于assets或者raw文件夾中的資源兰迫,可以使用7zip壓縮信殊,使用時進(jìn)行解壓。

6.代碼混淆

在gradle使用minifyEnabled進(jìn)行Proguard混淆的配置.

    android {
        buildTypes {
            release {
                minifyEnabled true
            }
        }
    }
為什么代碼混淆可以讓apk變小?

1)可以刪除注釋和不用的代碼汁果。
2)將java文件名改成短名
3)將方法名改成短名

7.資源(res)混淆

資源混淆簡單來說希望實(shí)現(xiàn)將res/drawable/icon,png變成res/drawable/a.png,或我們甚至可以將文件路徑也同時混淆涡拘,改成r/s/a.png。
建議使用微信的AndResGuard

8.使用微信AndResGuard

使用微信AndResGuard對資源混淆并且壓縮圖片res等資源

    apply plugin: 'AndResGuard'
    buildscript {
        dependencies {
            classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.1.7'
        }
    }
    andResGuard {
        mappingFile = null
        use7zip = true
        useSign = true
        keepRoot = false
        // add <your_application_id>.R.drawable.icon into whitelist.
        // because the launcher will get thgge icon with his name
        def packageName = <your_application_id>
                whiteList = [
        //for your icon
        packageName + ".R.drawable.icon",
                //for fabric
                packageName + ".R.string.com.crashlytics.*",
                //for umeng update
                packageName + ".R.string.umeng*",
                packageName + ".R.string.UM*",
                packageName + ".R.string.tb_*",
                packageName + ".R.layout.umeng*",
                packageName + ".R.layout.tb_*",
                packageName + ".R.drawable.umeng*",
                packageName + ".R.drawable.tb_*",
                packageName + ".R.anim.umeng*",
                packageName + ".R.color.umeng*",
                packageName + ".R.color.tb_*",
                packageName + ".R.style.*UM*",
                packageName + ".R.style.umeng*",
                packageName + ".R.id.umeng*"
        ]
        compressFilePattern = [
        "*.png",
                "*.jpg",
                "*.jpeg",
                "*.gif",
                "resources.arsc"
        ]
        sevenzip {
            artifact = 'com.tencent.mm:SevenZip:1.1.7'
            //path = "/usr/local/bin/7za"
        }
    }
9.Facebook的redex優(yōu)化字節(jié)碼

redex是facebook發(fā)布的一款android字節(jié)碼的優(yōu)化工具.
redex

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末据德,一起剝皮案震驚了整個濱河市鳄乏,隨后出現(xiàn)的幾起案子课舍,更是在濱河造成了極大的恐慌扣唱,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異饰剥,居然都是意外死亡官硝,警方通過查閱死者的電腦和手機(jī)割卖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門宴杀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蜗元,你說我怎么就攤上這事或渤。” “怎么了奕扣?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵薪鹦,是天一觀的道長。 經(jīng)常有香客問我惯豆,道長距芬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任循帐,我火速辦了婚禮框仔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拄养。我一直安慰自己离斩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布瘪匿。 她就那樣靜靜地躺著跛梗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪棋弥。 梳的紋絲不亂的頭發(fā)上核偿,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天,我揣著相機(jī)與錄音顽染,去河邊找鬼漾岳。 笑死,一個胖子當(dāng)著我的面吹牛粉寞,可吹牛的內(nèi)容都是我干的尼荆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼唧垦,長吁一口氣:“原來是場噩夢啊……” “哼捅儒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤巧还,失蹤者是張志新(化名)和其女友劉穎鞭莽,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體麸祷,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡澎怒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了摇锋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡站超,死狀恐怖荸恕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情死相,我是刑警寧澤融求,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站算撮,受9級特大地震影響生宛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜肮柜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一陷舅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧审洞,春花似錦莱睁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至痴晦,卻和暖如春南吮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背誊酌。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工部凑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人碧浊。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓砚尽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親辉词。 傳聞我的和親對象是個殘疾皇子必孤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容