北京大美寰宇影业有限公司谈微信安装包11年是怎么膨胀575倍的?

一款能占用用户十几G空间的软件,是怎么和小而美沾上边的?但如果在11年前说这句话,当时的微信确实可以称得上小而美。在2011年1月发布的微信1.0,它的安卓版APK安装包的大小仅仅只有457 KB,就能实现微信最核心的功能发信息,而到了2022年6月发布的微信8.0.24,这次的微信已经在小而美的路上渐行渐远,安卓版APK安装包的大小膨胀到了257兆, 11年膨胀575倍,远超手机性能和存储空间的提升速度。

微信在这11年是怎么从“小而美”变成“大而肥”的软件的。微信安卓版APK安装包逆向工程微信1.0和最新版8.024这两个版本,看看最初代微信和现在有什么区别,微信是怎么如此臃肿不堪的?右键微信APK文件,使用7-Zip打开,就能看到安装包里实际包含的文件,把它解压到文件夹里,这就是微信的本体了。APK文件只是一种压缩方式而已,所以你才会发现,安装好的app总比它的APK安装包大很多。以微信8.024为例,解压后大小617兆,占用空间644,包含12639个文件,是解压前257兆的2.4倍,而微信1.0解压后只有737 KB,占用空间1.03兆,只有199个文件。对比就可得知,微信1.0仅用199个文件就实现了聊天这个核心功能。可见新版微信有98%的文件都是垃圾。


打开解压后的新版微信文件夹,可以看到又有一堆文件夹和文件,第一个文件夹是assets,整个assets文件夹大小78.4兆,占用80.1兆的空间,包含1137个文件,只占了新版微信空间的12.7%。可见assets文件夹还不是垃圾最多了。在assets文件夹里装的资源,也就是你在微信app你能看到的大部分素材,例如微信自带的emoji不同页面下的字体,各种音频文件,比如说skdz,wav文件,就是微信收款到账的音频提醒。

从assets文件夹的各种文件路径就能看出来,最新版微信的开发非常混乱,之前收款到账提醒放在了assets\sound的路径下,而微信电话的临时则是直接放在了assets路径下,同样都是音频文件,没有整合到一个文件夹里。可见这两个功能模块不是一个人做的,都是各做各的,最后缝合到一起。而在微信1.0中,可能是由于当时的微信都是用了系统自带的资源,就没有assets文件夹,可见初代微信最大化利用了系统资源。第二个文件夹lib大小337兆,占了新版微信空间大小的54%,这里面装的都是各种第三方动态库,比如说在微信内解压文件需要用到的7-Zip微信内存是解码播放ape、flac、 mp3、ogg音频文件所用到的库,还有编解码视频用到的ffmepg库,一共有157个库。

那为什么会有这么多库呢?这就要说到编程了,可能没接触过编程的小伙伴会认为编程就是从零开始,一个个代码硬写,实际上变成是用胶水缝合,缺少什么功能就去网上找能实现这种功能的轮子,然后把它缝合进自己的app,自己只用写个最基本的框架罢了。这样做的好处是不用从零开始写各种函数和接口,但坏处就是app的功能越多, app的体积也会因为各种动态库的加入而变得非常臃肿,而在微信1.0中,lib文件夹下只有一个动态库,就能实现聊天这个微信最核心的功能,所以可见最新版微信有多么臃肿。

第三个文件夹是META-INF,新版大小2.1兆,初代大小34.4 kb,里面储存的开发者的数字签名。第四个文件夹是r,大小29.9兆,在微信1.0中对应的是res,大小250 k,在这里面存放着的素材库,比如说各种图形化界面的框架素材,在新版微信中采用的代码混淆技术,所以你看到的这些文件夹都是abcd之类的,就是为了提高立项工程难度的,这里还有各种杂七杂八的图标素材。

第五个文件夹是resdec,最新版和初代这个文件夹都是空的,就跳过不说了。说完文件夹.接下来说说根目录下的其他几个文件,首先是AndroidManifest.xml这是配置文件,没什么好说的。第二个是base info,记录的classes文件的md5值。第三个是resources.arsc,记录着文件之间的对应关系。


最后最重要的就是classes文件了,这个就是java经过源码编译后的java字节码文件,也就是微信编译后的程序本体,新版微信classes dex文件占了161兆,而初代微信的classes dex文件只有256 k, 11年暴涨644倍。

真正实现聊天这部分的代码可能只占0.1%,大量的代码用来运行小程序,视频号这种用不上的垃圾功能,明明初代微信用737 k的空间就能做到满足基本功能,可微信就是要把自己当操作系统来做,什么打车,快递,外卖,游戏,视频,不管你用不用得上,全给你塞进去。可以说,微信是安卓这个操作系统下的虚拟机,完全摒弃了小而美的初心,变得大又肥。

其实有时候我觉得手机用户挺惨的,自己花真金白银买回来的手机,大量的空间都用来堆放这些你永远都用不上的垃圾功能的代码资源,什么打车,快递,外卖,游戏,视频,这边微信给你占一遍,然后淘宝,支付宝,美团等各种app 又来占一遍你的空间。手机提升的性能和增加了内存,也用来运行这些功能的代码,用户丝毫没有选择权。

各大app厂家把用户的手机当作战场,原本我以为用最新款手机就能非常流畅,但是越用越卡,本质上就是这些app厂家做的妖,只准用新版app,不准用旧版app让你换新机,明明浏览器就能解决的功能,非要整个app。毕竟这样好收集用户数据。微信这些年更新的这些功能,很多你永远用不上的功能都给你塞进来,微信占用的99.9%的空间都是用来存放的不太用得到功能和资源,真正实现常用功能的部分内容不到0.1%。


内容来自网络,如有侵权请联系撤稿!

举报
评论 0