首頁 > 購物 > 正文

全球熱點評!11 年膨脹 575 倍,微信為何從“小而美”變成了“大而肥”?

2022-07-28 05:57:00來源:36kr

一個個超級App的誕生,是福還是禍?

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

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

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


(資料圖)

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

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

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

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

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

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

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

(1)assets 文件夾

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

而在微信 1.0 中,可能因為當時微信用的都是系統(tǒng)自帶的資源,所以并沒有 assets 文件夾。

值得一提的是,在解析微信 8.0.24 的 assets 文件夾時,UP 主吐槽了兩點:

編程最忌諱的就是拼音命名,因為這會使代碼很難維護,而騰訊程序員卻將“收款到賬”的音頻文件直接命名為“skdz”。

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

(2)lib 文件夾

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

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

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

(3)META-INF 文件夾

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

(4)r/res 文件夾

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

(5)resdec 文件夾

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

(6)其他文件

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

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

(7)源代碼組成

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

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

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

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

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

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

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

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

“電腦一個瀏覽器,手機塞滿 App?!?/p>

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

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

“作為一名 Android 開發(fā),這個視頻是篇爽文,但毫無技術(shù)價值,沒幾個正確的點?!?/p>

“雖然微信垃圾是事實,但你這個逆向明顯說不通?!?/p>

“主觀意識太強烈了。”

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

“如果可以自己下載模塊化就好了,在基礎(chǔ)聊天功能上,短視頻和看點自己選擇性下載。”

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

一個個超級 App 的誕生,是福還是禍?

還記得在去年的微信之夜上,微信創(chuàng)始人張小龍曾說:“微信一開始就是奔著小而美的產(chǎn)品去做的,現(xiàn)在也依然還是一款小而美的產(chǎn)品?!笨僧斘覀兛粗謾C里即便經(jīng)常清緩存也幾乎穩(wěn)居 App 內(nèi)存占用第一名的微信,不免有些茫然。

最初,微信作為“方便快捷簡便”的“輕聊天工具”走紅,而如今,承載了支付、短視頻、搜索、購物等多項功能的微信儼然已成長為一個超級 App。

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

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

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

參考鏈接

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)鍵詞: 占用空間 逆向工程 一個又一個

責任編輯:hnmd004