介紹
今天主要講下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







