4

微信安装包从0.5M暴涨到260M,为什么我们的程序越来越大? - 启明星工作室

 2 years ago
source link: https://www.cnblogs.com/mqingqing123/p/16523353.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

最近,微信安装包从v1.0的0.5M暴涨到V8.0的 260M引起大家热议,为什么我们开发的程序越来越大?本文做一个简单的讨论。(本文主要根据B站科技老男孩《逆向工程微信安装包,11年膨胀575倍到底更新了啥?》编写)。

1.程序安装包变大了

1.1安装包简介

最近,很多人都感觉到,现在的程序安装包没有1-2百兆大小都不好意思叫做安装包。这在以前是不可想象的,早期(其实也没有多早,大约10年前吧),正常一个程序的安装包也就30M左右,那时

你可以照样使用微信,使用百度,使用支付宝。可是现在,1-2百M的安装包比比皆是,而这还只是安装包。

7841-20220727062409446-1498754176.png

大家都知道android的apk是zip格式的,解压后,就可以看到本体了,微信安装包解压后大小已经达到了617M,包含了12639个文件。

作为对比,微信1.0版只有199个文件。

7841-20220727062509802-2003775194.png

 那么到底是那些东西占用了大量空间呢?

1.2资源文件站了12.8%

微信版资源文件包括的各种图片文件,视频、音频文件,比如微信铃声、各种图标等。

另外,原作者也提到新版微信应该是公司内部不同开发组做的,导致资源管理非常混乱,各顾各的,最后缝在一块,

所以,会有重复的情况,有些资源命名也直接使用的是拼音。

7841-20220727062929437-177900335.png

 1.3 各种库文件站了50%

  lib文件夹存放了各种库文件,这是安装包的大头。

在程序开发里,很多时候都使用了第三方库,而不是从零编起,

以微信为例,我要支持在线解压,那包含一个7-zip库。

我要支持视频播放(mp4,ogg,avi等),那就把ffmpeg库打包进去。

我要支持图片在线编辑,那把pngedit库包含进去

这些第三方库都是打包好的,很难再压缩。微信一共使用了157个库文件。

 

7841-20220727063506954-485310369.png

1.4  程序本体

程序本体也就是程序自己实现的主要功能,新版大小为161M,而 V1.0版本只有0.25M,换句话说,但就聊天而言

微信只要0.25M就能实现核心聊天功能,去掉零头,在161M的程序本体里,160M都可以去掉不要(当然这是有点夸张的说法)。

7841-20220727064311025-941425782.png

  进一步反编译可以看到在v1.0里使用了1845个string就能实现新版 1498000个string实现的聊天功能。

因此,你可以看想象到微信里面塞了多少内容。

 

7841-20220727064708225-862356317.png

 所以,微信中0.1%的功能是聊天,剩下的99.9%都是塞给你的,什么打车、游戏、外卖、视频等等,

7841-20220727065012991-1944590817.png

2.爱这么爱干的不止微信一家

软件包越来越大的企业不止微信,比如X浏览器使用1M就实现了浏览器的核心功能(充分利用操作系统自带的功能),而UC浏览器就达到了83M。

每个大企业都没有安全感,都把游戏、视频、外卖等往里塞。

刚刚,支付宝又提示有新的更新包,要我升级了。

7841-20220727065835491-1291019299.png

对比一下美国的 Facebook大小是66.52M,Twitter 安装包109M,谷歌地图99M(百度地图130M),都尽可能控制在100M以内。

7841-20220727071137792-67977374.png 7841-20220727071300593-272449267.png 7841-20220727071429476-1625918212.png

如今,虽然硬件急速发展,手机2核或4核,内存128或者256都已经算是最低配置了,

但是如果每个软件越来越大,再大的硬件配置也不够软件使用。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK