11 年膨胀 575 倍,微信为何从“小而美”变成了“大而肥”?

11 年膨胀 575 倍,微信为何从“小而美”变成了“大而肥”?
文章图片
整理|郑丽媛出品|CSDN(ID:CSDNnews)前一阵 , 马斯克“狂吹”微信 , 赞其功能强大 , 中国人就像“住在微信里面一样” , 是一个很好的App 。 结果今天一早 , 微信就因功能太多上了热搜:
11 年膨胀 575 倍,微信为何从“小而美”变成了“大而肥”?
文章图片
据了解 , 最初在2011年1月发布的微信1.0 , 其安卓APK安装包的体积仅有457KB , 可谓是名副其实的“小而美”;而到了11年后的如今 , 微信8.0.24版本的安装包已经达到了257MB——11年来 , 微信安装包膨胀了575倍 。
突然之间 , 觉得自己好像掌握了手机内存越来越大、空间却越来越小的答案……不过 , 膨胀了几百倍的微信到底加了些啥呢?
近日 , B站UP主“科技老男孩”就通过逆向工程 , 揭秘了这些年来微信APK安装包膨胀的575倍到底用来做什么了 , 即他所说的:“微信在这11年是怎么从小而美变成大而肥的 。 ”
11 年膨胀 575 倍,微信为何从“小而美”变成了“大而肥”?
文章图片
(图片来自B站UP主“科技老男孩”视频截图)
微信从“小而美”到“大而肥”由于575倍这一数字来自微信1.0和微信8.0.24之间的差距 , 因此这位UP主逆向工程和对比的也正是这两个微信版本 。
首先需要明确的是 , APK安装包本质上只是一种zip压缩包 , 这也就意味着安装好的App往往会比其APK文件要大得多 。
以微信8.0.24为例 , 其APK安装包257MB , 但解压后大小为617MB , 占用空间634MB , 包含12639个文件 , 是解压前的2.4倍 。 与之相比 , 微信1.0解压后只有737KB , 占用空间1.03MB , 文件数也只有199个——也就是说 , 当初微信1.0仅用199个文件就实现了“聊天”这个核心功能 。
随后 , 该UP主便分别查看这两个微信版本解压后的文件夹 , 对比其中差距所在 。
(1)assets文件夹
在微信8.0.24中 , 该文件夹大小78.4MB , 占用空间80.1MB , 包含1137个文件 , 主要装着微信的各类资源素材 , 如自带的emoji表情、不同页面下的字体、音频文件、图片资源、微信电话铃声等 。
而在微信1.0中 , 可能因为当时微信用的都是系统自带的资源 , 所以并没有assets文件夹 。
11 年膨胀 575 倍,微信为何从“小而美”变成了“大而肥”?
文章图片
值得一提的是 , 在解析微信8.0.24的assets文件夹时 , UP主吐槽了两点:
编程最忌讳的就是拼音命名 , 因为这会使代码很难维护 , 而腾讯程序员却将“收款到账”的音频文件直接命名为“skdz” 。
“收款到账”的音频放在assetssound路径下 , 而同为音频文件的“微信电话铃声”却直接放在了assets路径下 , 可见“新版微信的开发非常混乱” 。
(2)lib文件夹
在微信8.0.24中 , 该文件夹大小为337MB , 占用了该微信版本空间的54% , 里面装的是各种第三方动态库 , 如解压文件所用到的7-Zip库 , 实时解码播放ape、flac、mp3、ogg音频文件用到的库 , 编解码视频用到的ffmepg库等等 , 一共有157个库 。
据UP主分析 , 这些库的由来大多是因为“面向复制粘贴编程”:很多情况下 , 编程并不是从0开始硬写 , 而是缺少什么功能就去网上找实现这种功能的“轮子”再缝合进App里 , 这就导致了往App塞入的功能越多 , 其安装包体积也会因为各种动态库的加入变得越臃肿 。
反观微信1.0 , 其lib文件夹下只有1个动态库 , 大小也仅有127KB , 即可实现“聊天”这个最重要的功能 。
(3)META-INF文件夹
该文件夹用于存储开发者的数字签名 , 微信8.0.24中的大小为2.1MB , 微信1.0中则为34.4KB 。