发布时间: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 的诞生,对消费者而言究竟是便利的狂欢还是福利的悲哀?
最后,可否分享你手机中的微信占据多少内存?你对微信又有什么建议或看法?
相关攻略
比特币数量(比特币数量上限是怎么确定的)
03-21
包含比特币关闭中国的词条
03-21
比特币挖矿机(比特币挖矿机一天电费)
03-21
中文版手机比特币钱包(比特币钱包最新版本)
03-21
欧意交易所app下载入口 欧意交易所官网版下载安卓版
03-21
欧意交易所app下载地址 欧意交易所app下载安卓版4.6
03-21
binance交易所app下载 binanceapp官方下载最新版安卓版
03-21
binanceAPP官网下载安卓 binanceapp官方最新版
03-21
binance交易所app下载手机版 binance(Binance)交易所下载
03-21
欧义交易平台下载官方app苹果手机 ouyi交易平台app下载最新版
03-21
WBM币近期行情如何
03-21
MGP币近期行情如何
03-21
热门攻略推荐
比特币数量(比特币数量上限是怎么确定的)
2023-03-21
包含比特币关闭中国的词条
2023-03-21
比特币挖矿机(比特币挖矿机一天电费)
2023-03-21
中文版手机比特币钱包(比特币钱包最新版本)
2023-03-21
欧意交易所app下载入口 欧意交易所官网版下载安卓版
2023-03-21
欧意交易所app下载地址 欧意交易所app下载安卓版4.6
2023-03-21
binance交易所app下载 binanceapp官方下载最新版安卓版
2023-03-21
binanceAPP官网下载安卓 binanceapp官方最新版
2023-03-21
binance交易所app下载手机版 binance(Binance)交易所下载
2023-03-21
欧义交易平台下载官方app苹果手机 ouyi交易平台app下载最新版
2023-03-21