币安app官网下载
当前位置: 首页 > 应用资讯 > 软件动态

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

发布时间:2022-07-28 15:28:00 来源:[db:来源]

声明:本文来自于微信公众号 CSDN(ID:CSDNnews),授权360浏览器转载发布。

前一阵,马斯克“狂吹”微信,赞其功能强大,中国人就像“住在微信里面一样”,是一个很好的 App。结果今天一早,微信就因功能太多上了热搜:

图片

据了解,最初在2011年1月发布的微信1.0,其安卓 APK 安装包的体积仅有457KB,可谓是名副其实的“小而美”;而到了11年后的如今,微信8.0.24版本的安装包已经达到了257MB——11年来,微信安装包膨胀了575倍。

突然之间,觉得自己好像掌握了手机内存越来越大、空间却越来越小的答案……不过,膨胀了几百倍的微信到底加了些啥呢?

近日,B 站 UP 主“科技老男孩”就通过逆向工程,揭秘了这些年来微信 APK 安装包膨胀的575倍到底用来做什么了,即他所说的:“微信在这11年是怎么从小而美变成大而肥的。”

图片

(图片来自 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 文件夹。

图片

值得一提的是,在解析微信8.0.24的 assets 文件夹时,UP 主吐槽了两点:

编程最忌讳的就是拼音命名,因为这会使代码很难维护,而腾讯程序员却将“收款到账”的音频文件直接命名为“skdz”。

“收款到账”的音频放在 assets\sound 路径下,而同为音频文件的“微信电话铃声”却直接放在了 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。

(4)r/res 文件夹

在微信8.0.24中,r 文件夹大小29.9MB,它在微信1.0中对应的是 res 文件夹,大小为250KB,主要存放 App 的资源库,如各种图形化界面的框架素材、图标素材等。

图片

(5)resdec 文件夹

不论在微信1.0还是在微信8.0.24中,该文件夹都是空的,因此不再赘言。

(6)其他文件

除此之外,在微信8.0.24的根目录下还有17个文件:配置文件 AndroidManifest.xml,记录 classes.dex 文件 MD5值的 baseInfo.dat,记录文件之间对应关系的 resources.arsc,以及14个 classes.dex 文件,也就是 Java 经过源码编译后生成的 Java 字节码文件,即微信编译后的程序本体。

在微信8.0.24中,14个 classes.dex 文件共占161MB,对应微信1.0中仅有1个,且仅占256KB。

(7)源代码组成

分析完解压文件后,UP 主称还通过逆向工程查看了编译前的微信源代码,结果令其震惊。

先看微信1.0源代码所包含的内容,其组成源代码的基本单元如下:

图片

再看微信8.0.24的源代码组成单元:

图片

通过对比可轻易看出微信8.0.24中各种单元都增加了500倍以上,尤其是 string 字符串,从最初的1845个到新版中暴涨近150万个。UP 主对此调侃道:“可见新版微信中有99.9% 的内容都是垃圾,真正实现聊天部分的代码可能只占0.1%。”

在视频尾声,这名 UP 主总结道:“微信把自己当操作系统来做 App,什么打车、快递、外卖、游戏,不管你用不用得上都给你塞进去,然后淘宝、支付宝、美团等各种 App 又来占一遍你的手机空间,导致手机提升的性能和增加的内存都用来运行这些垃圾功能的代码,而用户丝毫没有选择权。”

网友:“电脑一个浏览器,手机塞满 App”

“科技老男孩”的这则视频在 B 站引起大量讨论的同时,也登上了微博热搜,众多网友对他的解析发表了自己的看法。

有许多人认可 UP 主的结论:

“电脑一个浏览器,手机塞满 App。”

“微信占我十个多 G,手机已经快爆了。”

部分人指出,这名 UP 主的分析并不专业,且过于主观:

“作为一名 Android 开发,这个视频是篇爽文,但毫无技术价值,没几个正确的点。”

“虽然微信垃圾是事实,但你这个逆向明显说不通。”

“主观意识太强烈了。”

同时也有部分网友借此说出了一些理想化建议:

“如果可以自己下载模块化就好了,在基础聊天功能上,短视频和看点自己选择性下载。”

“希望软件都出个纯净版,不要整些花里胡哨、不需要的功能增加内存。”

一个个超级 App 的诞生,是福还是祸?

还记得在去年的微信之夜上,微信创始人张小龙曾说:“微信一开始就是奔着小而美的产品去做的,现在也依然还是一款小而美的产品。”可当我们看着手机里即便经常清缓存也几乎稳居 App 内存占用第一名的微信,不免有些茫然。

图片

最初,微信作为“方便快捷简便”的“轻聊天工具”走红,而如今,承载了支付、短视频、搜索、购物等多项功能的微信俨然已成长为一个超级 App。

除却微信,目前许多企业做 App 也是一副“我全都要”的态度,为了吸引并稳固更多流量,不管相不相关、好不好用,只要火的功能就都往里塞,一个个都想成为全能浏览器、超级 App。

但实际上对于很多用户来说,这些功能往往并不会被用到,App 体积的增加对他们而言也并不必要——这就引发了一个思考:一个又一个超级 App 的诞生,对消费者而言究竟是便利的狂欢还是福利的悲哀?

最后,可否分享你手机中的微信占据多少内存?你对微信又有什么建议或看法?

本站所有软件来自互联网,版权归原著所有。如有侵权,敬请来信告知(700668#qq.com),我们将及时撤销。

Copyright©2024 www.youxiheapp.com All rights reserved. 版权所有 币安app官网下载

粤ICP备20010841号