微信安裝包從0.5M暴漲到260M,為什麼我們的程序越來越大?

  • 2022 年 7 月 27 日
  • 筆記

最近,微信安裝包從v1.0的0.5M暴漲到V8.0的 260M引起大家熱議,為什麼我們開發的程序越來越大?本文做一個簡單的討論。(本文主要根據B站科技老男孩《逆向工程微信安裝包,11年膨脹575倍到底更新了啥?》編寫)。

 

1.程序安裝包變大了

1.1安裝包簡介

最近,很多人都感覺到,現在的程序安裝包沒有1-2百兆大小都不好意思叫做安裝包。這在以前是不可想像的,早期(其實也沒有多早,大約10年前吧),正常一個程序的安裝包也就30M左右,那時

你可以照樣使用微信,使用百度,使用支付寶。可是現在,1-2百M的安裝包比比皆是,而這還只是安裝包。

 

大家都知道android的apk是zip格式的,解壓後,就可以看到本體了,微信安裝包解壓後大小已經達到了617M,包含了12639個文件。

作為對比,微信1.0版只有199個文件。

 

 那麼到底是那些東西佔用了大量空間呢?

 

1.2資源文件站了12.8%

微信版資源文件包括的各種圖片文件,視頻、音頻文件,比如微信鈴聲、各種圖標等。

另外,原作者也提到新版微信應該是公司內部不同開發組做的,導致資源管理非常混亂,各顧各的,最後縫在一塊,

所以,會有重複的情況,有些資源命名也直接使用的是拼音。

 

 

 

 1.3 各種庫文件站了50%

  lib文件夾存放了各種庫文件,這是安裝包的大頭。

在程序開發里,很多時候都使用了第三方庫,而不是從零編起,

以微信為例,我要支持在線解壓,那包含一個7-zip庫。

我要支持視頻播放(mp4,ogg,avi等),那就把ffmpeg庫打包進去。

我要支持圖片在線編輯,那把pngedit庫包含進去

這些第三方庫都是打包好的,很難再壓縮。微信一共使用了157個庫文件。

 

 

 

1.4  程序本體

程序本體也就是程序自己實現的主要功能,新版大小為161M,而 V1.0版本只有0.25M,換句話說,但就聊天而言

微信只要0.25M就能實現核心聊天功能,去掉零頭,在161M的程序本體里,160M都可以去掉不要(當然這是有點誇張的說法)。

  

 

  進一步反編譯可以看到在v1.0里使用了1845個string就能實現新版 1498000個string實現的聊天功能。

因此,你可以看想像到微信裏面塞了多少內容。

 

 

 

 所以,微信中0.1%的功能是聊天,剩下的99.9%都是塞給你的,什麼打車、遊戲、外賣、視頻等等,

 

 

 

2.愛這麼愛乾的不止微信一家

軟件包越來越大的企業不止微信,比如X瀏覽器使用1M就實現了瀏覽器的核心功能(充分利用操作系統自帶的功能),而UC瀏覽器就達到了83M。

每個大企業都沒有安全感,都把遊戲、視頻、外賣等往裡塞。

剛剛,支付寶又提示有新的更新包,要我升級了。

 

 

對比一下美國的 Facebook大小是66.52M,Twitter 安裝包109M,谷歌地圖99M(百度地圖130M),都儘可能控制在100M以內。

  

 

如今,雖然硬件急速發展,手機2核或4核,內存128或者256都已經算是最低配置了,

但是如果每個軟件越來越大,再大的硬件配置也不夠軟件使用。