美食小贴士:本文共1761字,预计阅读时间11分钟~
最近,B站的一位up做了逆向工程,对比了微信1.0和微信8.0.24的差距:
微信1.0版本于2011年1月发布,其 APK安装包只有
11年后的今天,微信的安装包已经到了11年“膨胀”575倍的地步。
以微信8.0.24为例,解压后其APK安装包大小是解压前的2.4倍。
相比之下,微信1.0解压后仅占用1.03MB空间,只有199个文件。也就是说,微信1.0只用了199个文件就实现了“聊天”的核心功能。
随后,UP主查看了两个微信版本的解压文件夹,对比了差异。
(1) 文件夹
在微信8.0.24中,该文件夹大小为78.4MB,占用空间80.1MB,包含1137个文件。主要包含微信的各种资源,如内置表情、不同页面的字体、音频文件、图片资源等。 、微信手机铃声等。
在微信1.0的时候,可能是因为微信使用了当时系统自带的资源,所以没有文件夹。
在解析微信8.0.24文件夹时,UP主抱怨了两点:
①编程最忌讳的就是拼音命名,因为这样会让代码难以维护,但腾讯程序员却直接将“支付到账”的音频文件命名为“skdz”。
②“付款到了”的音频放在\路径下,而“微信铃声”也是一个音频文件,直接放在该路径下。可见“新版微信的发展非常混乱”。
(2)lib文件夹
在微信8.0.24中,文件夹大小为 ,占据微信版本空间的54%。包含各种第三方动态库,如用于解压文件的7-Zip库,ape实时解码播放的库,用于flac、mp3、ogg音频文件的库,用于视频编解码的库等共有157个图书馆。
根据UP主的分析,这些库的起源大多是由于“面向复制粘贴的编程”:很多时候编程并不是从0开始硬编码的,但如果有一个函数缺失,上网找一个“轮子”来实现这个功能。拼接到App中,这就导致App中塞入的功能越多,安装包就会因为各种动态库的添加而变得越来越臃肿。
回顾微信1.0,lib文件夹下只有一个动态库,只是体积不大,可以实现“聊天”这个最重要的功能。

(3)META-INF文件夹
该文件夹用于存储开发者的数字签名。微信8.0.24中的大小为2.1MB,微信1.0中的大小为34.4KB。
(4)r/res文件夹
在微信8.0.24中,r文件夹大小为29.9MB。对应微信1.0中的res文件夹,大小为29.9MB。主要存放App的资源库,如各种图形界面框架素材、图标素材等。
(5) 文件夹
无论是微信1.0还是微信8.0.24,这个文件夹都是空的。
(六)其他文件
另外,微信8.0.24根目录下有17个文件:其中14个。 dex文件是Java源代码编译后生成的Java字节码文件,即微信编译后的程序体。
在微信8.0.24中,总共有14个.dex文件,对应微信1.0中只有1个,也只有1个。
(7) 源代码组成
UP主在分析了解压后的文件后表示,他还通过逆向工程检查了预编译的微信源代码,结果让他感到震惊。
我们首先看一下微信1.0源码中包含的内容。构成源代码的基本单元如下:
我们看一下微信8.0.24的源码组件:

通过对比,不难看出,微信8.0.24中的各个单元增加了500多倍,尤其是字符串,从最初的1845个猛增到新版本中的近150万个。 UP主对此调侃道:“可见新版微信中99.9%的内容都是垃圾,真正实现聊天部分的代码可能只占0.1%。”
还记得去年的微信之夜,微信创始人张小龙说过:
“微信从小而美的产品开始,现在仍然是小而美的产品。”
但当小编看到手机上频繁清理缓存的情况下,依然以6GB多的优势位居第一的微信时,不禁感到有些疑惑。
最初,微信被大众广泛接受为“方便、快捷、简单”的“轻聊天工具”,但现在,微信已经成为集支付、短视频、搜索、购物等功能于一体的超级App。
但事实上,对于很多人来说,这些功能都不会使用,APP体积的增大对于这些用户来说也没有必要。
那么,这个超级APP的诞生是好事还是坏事呢?
今天推荐课程:《蓝牙开发与实战》
点击下方小程序直接跳转观看▼▼▼
获取课程相关课件及源码,请扫描下方二维码
过去推荐的
●
●
●