《移動(dòng)App性能評(píng)測(cè)與優(yōu)化》——安裝包瘦身

安裝包瘦身

從APK的組成結(jié)構(gòu)可以看出涨共,其中占用空間最大的部分就是代碼和資源越败,所以我們要做安裝包瘦身就要從代碼和資源這兩個(gè)方向著手。

代碼部分:

冗余代碼

無用代碼

無用代碼是指工程中那些未被引用的代碼和文件栖秕,比如未被引用的變量蜂桶、方法和類等。

對(duì)于無用代碼交排,主要采用的方法就是用UCDetector對(duì)整個(gè)工程代碼進(jìn)行掃描划滋,找出引用為0的變量、方法埃篓、類处坪,然后根據(jù)情況進(jìn)行處理。

冗余代碼

冗余代碼是指重復(fù)的代碼或經(jīng)過優(yōu)化后可以用一段代碼量更小的代碼替換的代碼架专。

使用用simian的工具同窘,檢測(cè)出可以封裝的模塊,提高代碼復(fù)用率部脚。

方法數(shù)縮減

  1. 避免在內(nèi)部類中訪問外部類的私有方法/變量想邦。將成員變量的private屬性替換為protected/public或者直接去掉修飾
  2. 避免調(diào)用派生類中的未被覆蓋(override)的方法。對(duì)于不需要被覆蓋的方法委刘,顯式地改成調(diào)用基類的方法丧没。
  3. 將類的成員變量改為public,并去掉get锡移、set方法呕童。

代碼混淆

使用Proguard工具混淆代碼,它不但可以將代碼中的各種元素名稱改得簡(jiǎn)短淆珊,而且可以移除冗余代碼夺饲。

資源部分

冗余資源

APK的資源主要包括圖片、XML施符。與冗余代碼類似往声,資源里面可能也遺留了不少舊版本使用而新版本不再使用的圖片、XML等戳吝。

對(duì)冗余資源采用的方法是先用Lint掃描浩销,然后寫自動(dòng)化腳本對(duì)Lint掃描結(jié)果進(jìn)行處理,找到那些在代碼和XML中都不再引用的資源進(jìn)行刪除骨坑。

資源混淆

對(duì)資源名稱進(jìn)行混淆撼嗓,resources.arsc變小。

圖片處理

  1. 圖片壓縮欢唾,在適當(dāng)?shù)膱?chǎng)景下做圖片的有損壓縮且警。
  2. JPG與PNG的轉(zhuǎn)換,小尺寸礁遣、色彩數(shù)少斑芜、或者有alpha通道透明度的時(shí)候,使用PNG祟霍;大尺寸杏头、色彩漸變色多的用JPG。
  3. 點(diǎn)9圖化沸呐,減少了圖片量醇王,也減少了安裝包的大小。
  4. 無用圖片的再次梳理崭添,刪除以前版本遺留的無用圖片寓娩。
  5. 圖片網(wǎng)絡(luò)化,不重要的圖片可以采用下載的方式獲取呼渣。

極限壓縮zip

打包過程的壓縮原理

Android打包過程中壓縮文件的過程:

  1. aapt工具對(duì)工程非asset資源的編譯壓縮

aapt對(duì)壓縮安裝包的主要貢獻(xiàn)主要在于賦予每一個(gè)非assets資源一個(gè)ID值棘伴,以便將XML二進(jìn)制化,從而節(jié)省空間屁置,以及對(duì)圖片進(jìn)行無損壓縮焊夸。

  1. SignedJarBuilder類對(duì)工程的壓縮

SignedJarBuilder類對(duì)整個(gè)工程包括代碼.dex文件和一些可壓縮的資源、文件進(jìn)行壓縮蓝角,它使用的壓縮算法由Java.util.zip類提供阱穗。

提高壓縮級(jí)別

使用7z工具對(duì)其進(jìn)行DEFLATE極限壓縮以提高壓縮效率。提高壓縮級(jí)別可在不對(duì)APK包本身的內(nèi)容做任何修改的情況下得到更小的APK包使鹅。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末颇象,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子并徘,更是在濱河造成了極大的恐慌遣钳,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,222評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件麦乞,死亡現(xiàn)場(chǎng)離奇詭異蕴茴,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)姐直,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門倦淀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人声畏,你說我怎么就攤上這事撞叽∫龀桑” “怎么了?”我有些...
    開封第一講書人閱讀 157,720評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵愿棋,是天一觀的道長(zhǎng)科展。 經(jīng)常有香客問我,道長(zhǎng)糠雨,這世上最難降的妖魔是什么才睹? 我笑而不...
    開封第一講書人閱讀 56,568評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮甘邀,結(jié)果婚禮上琅攘,老公的妹妹穿的比我還像新娘。我一直安慰自己松邪,他們只是感情好坞琴,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,696評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著逗抑,像睡著了一般置济。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锋八,一...
    開封第一講書人閱讀 49,879評(píng)論 1 290
  • 那天浙于,我揣著相機(jī)與錄音,去河邊找鬼挟纱。 笑死羞酗,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的紊服。 我是一名探鬼主播檀轨,決...
    沈念sama閱讀 39,028評(píng)論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼欺嗤!你這毒婦竟也來了参萄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,773評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤煎饼,失蹤者是張志新(化名)和其女友劉穎讹挎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吆玖,經(jīng)...
    沈念sama閱讀 44,220評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡筒溃,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,550評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了沾乘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片怜奖。...
    茶點(diǎn)故事閱讀 38,697評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖翅阵,靈堂內(nèi)的尸體忽然破棺而出歪玲,到底是詐尸還是另有隱情迁央,我是刑警寧澤,帶...
    沈念sama閱讀 34,360評(píng)論 4 332
  • 正文 年R本政府宣布滥崩,位于F島的核電站岖圈,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏夭委。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,002評(píng)論 3 315
  • 文/蒙蒙 一募强、第九天 我趴在偏房一處隱蔽的房頂上張望株灸。 院中可真熱鬧,春花似錦擎值、人聲如沸慌烧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽屹蚊。三九已至,卻和暖如春进每,著一層夾襖步出監(jiān)牢的瞬間汹粤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工田晚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嘱兼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,433評(píng)論 2 360
  • 正文 我出身青樓贤徒,卻偏偏與公主長(zhǎng)得像芹壕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子接奈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,587評(píng)論 2 350

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