Apk瘦身實用總結(jié)

Apk瘦身

Apk的大小對于用戶是否選擇下載應(yīng)用起著至關(guān)重要的影響
下面是對于減小Apk大小的一些常用且實用的方法總結(jié)
如有錯誤饵史,歡迎大家踴躍指出


目錄

  • 資源占用分析
  • 圖片壓縮
    • 圖片類型
    • 壓縮
    • PNG壓縮
    • Webp
  • 混淆
    • 代碼混淆
    • 資源混淆
  • resConfig和lib
  • 優(yōu)化代碼
  • 致謝

資源占用分析

  1. 使用AndroidStudio,將APK拖拽到AS里面就出現(xiàn)如下圖:
  1. 簡單分析目錄作用:
  1. 針對大小較大的目錄進行優(yōu)化

圖片壓縮

圖片類型

  • JPEG :一種廣泛使用的有損壓縮圖像的標(biāo)準格式,不支持透明通道和多幀動畫滤港。
  • PNG : 一種無損壓縮圖片格式鼠冕,支持透明通道
  • WebP :支持有損和無損壓縮添寺、支持完整的透明通道、支持多幀動畫懈费,同時大小也得到很好的限制

壓縮

使用 TinyPNG工具支持對PNG/JPEG圖片類型的壓縮

PNG替換

根據(jù)情況使用一下資源替換PNG

  • Drawable.xml : 一些漸變背景圖或者形狀都可以直接通過xml繪制出來计露,SVG在Android中的應(yīng)用 也可以給你提供一些繪制的思路
  • NinePatch : 點9圖,體積小憎乙,支持拉伸不變形票罐,實現(xiàn)一圖多用,降低APK體積寨闹。AndroidStudio提供PNG轉(zhuǎn)換成 NinePatch的方法胶坠,只需要對著PNG右鍵Create 9-Patch file
  • JPEG : 在對透明通道無需求的情況下,使用JPEG代替PNG也可以降低APK 體積

WebP

  • 優(yōu)勢:
    • PNG 轉(zhuǎn) WebP 的壓縮率要高于 PNG 原圖壓縮率繁堡,同樣支持有損與無損壓縮
    • 轉(zhuǎn)換后的 WebP 體積大幅減少沈善,圖片質(zhì)量也得到保障(同時肉眼幾乎無法看出差異)
    • 轉(zhuǎn)換后的 WebP 支持 Alpha 透明和 24-bit 顏色數(shù)乡数,不存在 PNG8 色彩不夠豐富和在瀏覽器中可能會出現(xiàn)毛邊的問題
    • AndroidStudio2.3之后支持對WebP的預(yù)覽和直接轉(zhuǎn)換
  • 注意:
    • Android 4.0 以后才支持, 4.2.1以后才支持帶透明通道的WebP
    • 對于不需要透明度的PNG需要 先轉(zhuǎn)換成JPEG再轉(zhuǎn)化成WebP闻牡,否則會因為帶有透明通道净赴,而在4.2.1以下的版本中無法顯示

混淆

代碼混淆

  • minifyEnable : 啟動混淆,啟用混淆的同時他會對代碼壓縮和優(yōu)化罩润,找出沒有引用的代碼并 在生成APK之前剔除
  • shrinkResources : 只有當(dāng) minifyEnable 開啟玖翅,才能起作用。去除無用的resource文件割以。 注意shrinkResources 不能幫你移除資源文件金度, 只會幫你壓縮合并(可能是因為R文件 生成id索引信息)。
  • 使用Lint刪除無用資源 : Refactor -> Remove Unused Resource 严沥。 注意 : 刪除之前最好Preview一下猜极,不然會把一些通過反射或者Uri等方式引用的資源也會被刪除,最終導(dǎo)致 Resources Not Found Exception

資源混淆

關(guān)于資源混淆目前比較好的是微信的方案:AndResGuard
相關(guān)的注意事項和使用方式在項目地址也有很清晰的說明了~~

resConfig和lib

android {
  ...
    defaultConfig {
      ...
        resConfigs  "en","fr"

        ndk{
        //設(shè)置支持的SO庫架構(gòu)
        abiFilters 'armeabi','x86','armeabi-v7a','x86_64','arm64-v8a'
        }
    }
    }

根據(jù)需要指定需要的語言和需要兼容的so庫文件消玄,從而減少不必要的文件達到瘦身的目的跟伏。

優(yōu)化代碼

  • 移除廢棄功能的代碼,反正有 VCS 翩瓜,刪了代碼隨時可以找回受扳;
  • 移除重復(fù)的代碼,如:已經(jīng)有了的功能代碼兔跌,團隊成員不知道自己又寫了一套,只能靠代碼 Review 解決了相满;
  • 移除功能重疊的框架桦卒,如:項目中有幾套網(wǎng)絡(luò)訪問框架 Volley匿又、AsyncHttpClient、Retrofit 等碌更,同樣只能靠代碼 Review 解決;
  • 移除無用的 dependencies 或者 jar 包嘿棘;
  • 減小對 Support 兼容包的依賴旭绒,Support-V4 包非常大焦人,項目引入無疑會增大 dex 文件的大小重父,Google 已經(jīng)意識到這個問題,所以 Support-V7 一開始就做了拆分房午,并且開始對 Support-V4 做拆分,雖然目前成果還不明顯袋倔,不過還是蠻值得期待的折柠,特別是發(fā)現(xiàn)你少了 Support-V4 包后,可能就從2個 dex 變成1個 dex 了呢液走;
  • 插件化,一種懶加載思想的體現(xiàn)缘眶,先讓用戶能夠安裝宿主包巷懈,對于一些功能模塊做插件化,在特定的時機再下載安裝顶燕;

綜上所述,就可以有效的精簡我們安裝包中的 dex 文件大小涌攻,從而達到瘦身目的。

致謝

《Android高級進階》 - 顧浩鑫
APK瘦身實踐
APK應(yīng)用瘦身的一些坑
APK應(yīng)用瘦身
WebP探索

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末芝此,一起剝皮案震驚了整個濱河市因痛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌膊升,老刑警劉巖谭企,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件结胀,死亡現(xiàn)場離奇詭異责循,居然都是意外死亡,警方通過查閱死者的電腦和手機秸抚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門歹垫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吭敢,你說我怎么就攤上這事暮芭。” “怎么了辕宏?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵瑞筐,是天一觀的道長凄鼻。 經(jīng)常有香客問我聚假,道長,這世上最難降的妖魔是什么峭范? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任闯袒,我火速辦了婚禮游岳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘喷户。我一直安慰自己访锻,他們只是感情好闹获,可當(dāng)我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布河哑。 她就那樣靜靜地躺著,像睡著了一般沙庐。 火紅的嫁衣襯著肌膚如雪佳吞。 梳的紋絲不亂的頭發(fā)上底扳,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天阱冶,我揣著相機與錄音,去河邊找鬼。 笑死泥耀,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缝裁,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼粹污,長吁一口氣:“原來是場噩夢啊……” “哼衩匣!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起柄延,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤撩满,失蹤者是張志新(化名)和其女友劉穎昭躺,沒想到半個月后张咳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡泌参,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年烘嘱,在試婚紗的時候發(fā)現(xiàn)自己被綠了捡硅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡狱庇,死狀恐怖驳棱,靈堂內(nèi)的尸體忽然破棺而出形葬,到底是詐尸還是另有隱情淌实,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布恨闪,位于F島的核電站放坏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏钧敞。R本人自食惡果不足惜麸粮,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一弄诲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧威根,春花似錦、人聲如沸敢茁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谎砾。三九已至,卻和暖如春景图,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背亮蒋。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工妆毕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留笛粘,地道東北人湿硝。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓润努,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蚤吹。 傳聞我的和親對象是個殘疾皇子随抠,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,665評論 2 354

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