APK極限壓縮

介紹

今天主要講下APK瘦身,主要分為七步

講解流程:

1.將圖片轉(zhuǎn)化成webp
2.去除多語(yǔ)言
3.只保留armeabi-v7a
4.移除無(wú)用資源
5.開(kāi)啟混淆
6.開(kāi)啟刪除無(wú)用資源
7.AndResGuard微信資源壓縮方案

1.將圖片轉(zhuǎn)化成webp

image.png

2.去除多語(yǔ)言

1、由于第三方庫(kù),如appcompat-v7的引入,庫(kù)中包含了大量的國(guó)際化資源,
根據(jù)情況通過(guò)配置刪除。


image.png

3.只保留armeabi-v7a

如果項(xiàng)目中包含第三方SDK或者自己使用了ndk,
如果不進(jìn)行配置會(huì)打包全cpu架構(gòu)的動(dòng)態(tài)庫(kù)進(jìn)入apk。
對(duì)于真機(jī),只需要保留一個(gè)armeabi(armeabi-v7a)就可以了。


image.png

image.png

4.移除無(wú)用資源

1、一鍵移除,如果出現(xiàn)使用動(dòng)態(tài)id使用資源會(huì)出現(xiàn)問(wèn)題(不建議)


image.png

4.1Lint檢查

什么是Lint?

Lint 是Android Studio 提供的 代碼掃描分析工具,它可以幫助我們發(fā)現(xiàn)代碼結(jié)構(gòu)/質(zhì)量問(wèn)題,同時(shí)提供一些解決方案,而且這個(gè)過(guò)程不需要我們手寫(xiě)測(cè)試用例。
代碼迭代版本一多,很容易會(huì)遺留一些無(wú)用的代碼、資源文件,我們可以使用 Lint 進(jìn)行清除。

移除無(wú)用資源(Lint檢查)

image.png

5.開(kāi)啟混淆

什么是混淆?

Android代碼混淆,又稱(chēng)Android混淆,是一種Android APP保護(hù)技術(shù),用于保護(hù)APP不被破解和逆向分析。
ProGuard的三大作用
壓縮
移除未被使用的類(lèi)、屬性、方法等,并且會(huì)在優(yōu)化動(dòng)作執(zhí)行之后再次執(zhí)行(因?yàn)閮?yōu)化后可能會(huì)再次暴露一些未被使用的類(lèi)和成員。
優(yōu)化
優(yōu)化字節(jié)碼,并刪除未使用的結(jié)構(gòu)。
混淆
將類(lèi)名、屬性名、方法名混淆為難以讀懂的字母

詳情參考http://www.itdecent.cn/p/1b76e4c10495

6.開(kāi)啟刪除無(wú)用資源(與Lint不同)

shrinkResources = true
shrinkResources 用來(lái)開(kāi)啟壓縮無(wú)用資源,也就是沒(méi)有被引用的文件(經(jīng)過(guò)實(shí)測(cè)是drawable,layout,實(shí)際并不是徹底刪除,而是保留文件名,但是沒(méi)有內(nèi)容,等等),但是因?yàn)樾枰朗欠癖灰盟孕枰浜蟤ififyEnable使用,只有當(dāng)兩者都為true的時(shí)候才會(huì)起到真正的刪除無(wú)效代碼和無(wú)引用資源的目的
與去除無(wú)用資源不同的是,比如 某個(gè)java類(lèi)沒(méi)有用到,被混淆時(shí)刪除了,而該類(lèi)引入了layout資源 。此時(shí)會(huì)將這個(gè)資源也壓縮掉

嚴(yán)格模式與普通模式

開(kāi)啟嚴(yán)格模式
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:shrinkMode="strict" />

手動(dòng)保留xml
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:keep="@layout/base_*"
    tools:discard="@layout/unused2" />

7.AndResGuard微信資源壓縮方案

什么是 AndResGuard

AndResGuard是一個(gè)縮小APK大小的工具,它的原理類(lèi)似Java Proguard,但是只針對(duì)資源。它會(huì)將原本冗長(zhǎng)的資源路徑變短,例如將res/drawable/wechat變?yōu)閞/d/a。

為什么 使用AndResGuard

在以往的開(kāi)發(fā)中,我們通常只混淆了代碼,資源文件卻暴露在他人面前,res文件夾下所有文件名的可讀性過(guò)強(qiáng)

微信的開(kāi)源庫(kù)AndResGuard 7zip壓縮正好解決這種問(wèn)題,對(duì)資源進(jìn)行混淆,保護(hù)res資源文件的可讀性,同時(shí),可以減少APP的大小

效果圖對(duì)比

image.png
image.png

詳情參考https://blog.csdn.net/weixin_35691921/article/details/117370116

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.將圖片轉(zhuǎn)換成webp 這個(gè)圖片格式相比png或者jpg格式的圖片損失的質(zhì)量幾乎可以忽略不計(jì),但圖片壓縮后的體積...
    hxljy閱讀 285評(píng)論 0 5
  • 隨著項(xiàng)目的不斷迭代,功能越來(lái)越多,構(gòu)建出來(lái)的apk文件的大小也會(huì)越來(lái)越大,這樣會(huì)導(dǎo)致在移動(dòng)網(wǎng)絡(luò)情況下下載時(shí),使用的...
    Androidgiao閱讀 859評(píng)論 0 6
  • 一、為什么要做apk包體積優(yōu)化? 1、提高下載轉(zhuǎn)化率;包的大小也是用戶考慮是否下載的因素之一。 2、渠道合作商的要...
    Thisislife閱讀 1,144評(píng)論 0 2
  • 作者:字節(jié)跳動(dòng)技術(shù)團(tuán)隊(duì) 鏈接:http://www.itdecent.cn/p/09dc7e734346 隨著版...
    這個(gè)美嘉不姓陳閱讀 508評(píng)論 0 1
  • APK的組成結(jié)構(gòu)### META-INF:包含CERT.SF和CERT.RSA簽名文件,和MANIFEST.MF清...
    yujunjun閱讀 280評(píng)論 0 0

友情鏈接更多精彩內(nèi)容