全球熱點(diǎn)評(píng)!11 年膨脹 575 倍,微信為何從“小而美”變成了“大而肥”?

2022-07-28 05:57:00來(lái)源:36kr

一個(gè)個(gè)超級(jí)App的誕生,是福還是禍?

前一陣,馬斯克“狂吹”微信,贊其功能強(qiáng)大,中國(guó)人就像“住在微信里面一樣”,是一個(gè)很好的 App。結(jié)果今天一早,微信就因功能太多上了熱搜:

據(jù)了解,最初在 2011 年 1 月發(fā)布的微信 1.0,其安卓 APK 安裝包的體積僅有 457KB,可謂是名副其實(shí)的“小而美”;而到了 11 年后的如今,微信 8.0.24 版本的安裝包已經(jīng)達(dá)到了 257MB——11 年來(lái),微信安裝包膨脹了 575 倍。

突然之間,覺(jué)得自己好像掌握了手機(jī)內(nèi)存越來(lái)越大、空間卻越來(lái)越小的答案……不過(guò),膨脹了幾百倍的微信到底加了些啥呢?


(資料圖)

近日,B 站 UP 主“科技老男孩”就通過(guò)逆向工程,揭秘了這些年來(lái)微信 APK 安裝包膨脹的 575 倍到底用來(lái)做什么了,即他所說(shuō)的:“微信在這 11 年是怎么從小而美變成大而肥的?!?/p>

(圖片來(lái)自 B 站 UP 主“科技老男孩”視頻截圖)

微信從“小而美”到“大而肥”

由于 575 倍這一數(shù)字來(lái)自微信 1.0 和微信 8.0.24 之間的差距,因此這位 UP 主逆向工程和對(duì)比的也正是這兩個(gè)微信版本。

首先需要明確的是,APK 安裝包本質(zhì)上只是一種 zip 壓縮包,這也就意味著安裝好的 App 往往會(huì)比其 APK 文件要大得多。

以微信 8.0.24 為例,其 APK 安裝包 257MB,但解壓后大小為 617MB,占用空間 634MB,包含 12639 個(gè)文件,是解壓前的 2.4 倍。與之相比,微信 1.0 解壓后只有 737KB,占用空間 1.03MB,文件數(shù)也只有 199 個(gè)——也就是說(shuō),當(dāng)初微信 1.0 僅用 199 個(gè)文件就實(shí)現(xiàn)了“聊天”這個(gè)核心功能。

隨后,該 UP 主便分別查看這兩個(gè)微信版本解壓后的文件夾,對(duì)比其中差距所在。

(1)assets 文件夾

在微信 8.0.24 中,該文件夾大小 78.4MB,占用空間 80.1MB,包含 1137 個(gè)文件,主要裝著微信的各類資源素材,如自帶的 emoji 表情、不同頁(yè)面下的字體、音頻文件、圖片資源、微信電話鈴聲等。

而在微信 1.0 中,可能因?yàn)楫?dāng)時(shí)微信用的都是系統(tǒng)自帶的資源,所以并沒(méi)有 assets 文件夾。

值得一提的是,在解析微信 8.0.24 的 assets 文件夾時(shí),UP 主吐槽了兩點(diǎn):

編程最忌諱的就是拼音命名,因?yàn)檫@會(huì)使代碼很難維護(hù),而騰訊程序員卻將“收款到賬”的音頻文件直接命名為“skdz”。

“收款到賬”的音頻放在 assets\sound 路徑下,而同為音頻文件的“微信電話鈴聲”卻直接放在了 assets 路徑下,可見(jiàn)“新版微信的開(kāi)發(fā)非?;靵y”。

(2)lib 文件夾

在微信 8.0.24 中,該文件夾大小為 337MB,占用了該微信版本空間的 54%,里面裝的是各種第三方動(dòng)態(tài)庫(kù),如解壓文件所用到的 7-Zip 庫(kù),實(shí)時(shí)解碼播放 ape、flac、mp3、ogg 音頻文件用到的庫(kù),編解碼視頻用到的 ffmepg 庫(kù)等等,一共有 157 個(gè)庫(kù)。

據(jù) UP 主分析,這些庫(kù)的由來(lái)大多是因?yàn)椤懊嫦驈?fù)制粘貼編程”:很多情況下,編程并不是從 0 開(kāi)始硬寫,而是缺少什么功能就去網(wǎng)上找實(shí)現(xiàn)這種功能的“輪子”再縫合進(jìn) App 里,這就導(dǎo)致了往 App 塞入的功能越多,其安裝包體積也會(huì)因?yàn)楦鞣N動(dòng)態(tài)庫(kù)的加入變得越臃腫。

反觀微信 1.0,其 lib 文件夾下只有 1 個(gè)動(dòng)態(tài)庫(kù),大小也僅有 127KB,即可實(shí)現(xiàn)“聊天”這個(gè)最重要的功能。

(3)META-INF 文件夾

該文件夾用于存儲(chǔ)開(kāi)發(fā)者的數(shù)字簽名,微信 8.0.24 中的大小為 2.1MB,微信 1.0 中則為 34.4KB。

(4)r/res 文件夾

在微信 8.0.24 中,r 文件夾大小 29.9MB,它在微信 1.0 中對(duì)應(yīng)的是 res 文件夾,大小為 250KB,主要存放 App 的資源庫(kù),如各種圖形化界面的框架素材、圖標(biāo)素材等。

(5)resdec 文件夾

不論在微信 1.0 還是在微信 8.0.24 中,該文件夾都是空的,因此不再贅言。

(6)其他文件

除此之外,在微信 8.0.24 的根目錄下還有 17 個(gè)文件:配置文件 AndroidManifest.xml,記錄 classes.dex 文件 MD5 值的 baseInfo.dat,記錄文件之間對(duì)應(yīng)關(guān)系的 resources.arsc,以及 14 個(gè) classes.dex 文件,也就是 Java 經(jīng)過(guò)源碼編譯后生成的 Java 字節(jié)碼文件,即微信編譯后的程序本體。

在微信 8.0.24 中,14 個(gè) classes.dex 文件共占 161 MB,對(duì)應(yīng)微信 1.0 中僅有 1 個(gè),且僅占 256KB。

(7)源代碼組成

分析完解壓文件后,UP 主稱還通過(guò)逆向工程查看了編譯前的微信源代碼,結(jié)果令其震驚。

先看微信 1.0 源代碼所包含的內(nèi)容,其組成源代碼的基本單元如下:

再看微信 8.0.24 的源代碼組成單元:

通過(guò)對(duì)比可輕易看出微信 8.0.24 中各種單元都增加了 500 倍以上,尤其是 string 字符串,從最初的 1845 個(gè)到新版中暴漲近 150 萬(wàn)個(gè)。UP 主對(duì)此調(diào)侃道:“可見(jiàn)新版微信中有 99.9% 的內(nèi)容都是垃圾,真正實(shí)現(xiàn)聊天部分的代碼可能只占 0.1%?!?/p>

在視頻尾聲,這名 UP 主總結(jié)道:“微信把自己當(dāng)操作系統(tǒng)來(lái)做 App,什么打車、快遞、外賣、游戲,不管你用不用得上都給你塞進(jìn)去,然后淘寶、支付寶、美團(tuán)等各種 App 又來(lái)占一遍你的手機(jī)空間,導(dǎo)致手機(jī)提升的性能和增加的內(nèi)存都用來(lái)運(yùn)行這些垃圾功能的代碼,而用戶絲毫沒(méi)有選擇權(quán)?!?/p>

網(wǎng)友:“電腦一個(gè)瀏覽器,手機(jī)塞滿 App”

“科技老男孩”的這則視頻在 B 站引起大量討論的同時(shí),也登上了微博熱搜,眾多網(wǎng)友對(duì)他的解析發(fā)表了自己的看法。

有許多人認(rèn)可 UP 主的結(jié)論

“電腦一個(gè)瀏覽器,手機(jī)塞滿 App?!?/p>

“微信占我十個(gè)多 G,手機(jī)已經(jīng)快爆了?!?/p>

部分人指出,這名 UP 主的分析并不專業(yè),且過(guò)于主觀

“作為一名 Android 開(kāi)發(fā),這個(gè)視頻是篇爽文,但毫無(wú)技術(shù)價(jià)值,沒(méi)幾個(gè)正確的點(diǎn)?!?/p>

“雖然微信垃圾是事實(shí),但你這個(gè)逆向明顯說(shuō)不通?!?/p>

“主觀意識(shí)太強(qiáng)烈了?!?/p>

同時(shí)也有部分網(wǎng)友借此說(shuō)出了一些理想化建議

“如果可以自己下載模塊化就好了,在基礎(chǔ)聊天功能上,短視頻和看點(diǎn)自己選擇性下載?!?/p>

“希望軟件都出個(gè)純凈版,不要整些花里胡哨、不需要的功能增加內(nèi)存?!?/p>

一個(gè)個(gè)超級(jí) App 的誕生,是福還是禍?

還記得在去年的微信之夜上,微信創(chuàng)始人張小龍?jiān)f(shuō):“微信一開(kāi)始就是奔著小而美的產(chǎn)品去做的,現(xiàn)在也依然還是一款小而美的產(chǎn)品?!笨僧?dāng)我們看著手機(jī)里即便經(jīng)常清緩存也幾乎穩(wěn)居 App 內(nèi)存占用第一名的微信,不免有些茫然。

最初,微信作為“方便快捷簡(jiǎn)便”的“輕聊天工具”走紅,而如今,承載了支付、短視頻、搜索、購(gòu)物等多項(xiàng)功能的微信儼然已成長(zhǎng)為一個(gè)超級(jí) App。

除卻微信,目前許多企業(yè)做 App 也是一副“我全都要”的態(tài)度,為了吸引并穩(wěn)固更多流量,不管相不相關(guān)、好不好用,只要火的功能就都往里塞,一個(gè)個(gè)都想成為全能瀏覽器、超級(jí) App。

但實(shí)際上對(duì)于很多用戶來(lái)說(shuō),這些功能往往并不會(huì)被用到,App 體積的增加對(duì)他們而言也并不必要——這就引發(fā)了一個(gè)思考:一個(gè)又一個(gè)超級(jí) App 的誕生,對(duì)消費(fèi)者而言究竟是便利的狂歡還是福利的悲哀?

最后,可否分享你手機(jī)中的微信占據(jù)多少內(nèi)存?你對(duì)微信又有什么建議或看法?

參考鏈接

https://www.bilibili.com/video/BV1cB4y1b77n?spm_id_from=333.337.search-card.all.click

https://s.weibo.com/weibo?q=%E5%BE%AE%E4%BF%A1%E5%AE%89%E8%A3%85%E5%8C%8511%E5%B9%B4%E8%86%A8%E8%83%80575%E5%80%8D&Refer=realtime_weibo

關(guān)鍵詞: 占用空間 逆向工程 一個(gè)又一個(gè)

責(zé)任編輯:hnmd004