App越来越大 程序员用5分钟把一个400多MB的苹果安装包削掉了187MB

几天前,一个移动QQ安装包的速度快到了900mb,这在互联网上很吵。

最新的安装包又大了,924mb

虽然最终我们发现它增加了一个主要用于视频通话效果的虚拟引擎,但网民们仍然感叹:

现在这个应用真的越来越大了。

就在最近,一位外国程序员也遇到了同样的困惑。

因为飞机上没有小电视,他不得不下载一个名为“联合航空”的应用程序来观看视频消磨时间。

小哥(AndyLau)哀叹,航空公司越来越像小偷:给客户增加了成本,在开设应用商店时,他感到惊讶:

这不只是为了看电影吗?Netflix只有101.5mb。这个应用怎么可能是它的四倍呢?

作为一名IOS/Android开发工程师,小哥(AndyLau)决定不“等死”,看看它是否真的需要这么多空间。

最初,可以节省187mb

仍在飞机上的小哥立即与IPANicholasTse下载了该应用程序的二进制文件。

IPANicholasTse是GitHub上标1.4k的开源项目。它是一个命令行工具。您可以从IOS应用商店搜索并下载应用程序的IPA软件包。有了这个软件包,您可以检查开发内容和其他功能。

下载后,您需要将IPA扩展名更改为zip。解压缩后,您可以看到以下目录:

可以发现,框架占414.8mb。AndyLau解释说,应用程序的主要内存源是框架。现在最好的做法是将代码推入其中,这很正常。

接下来,输入目录:

以ual开始的框架是核心架构,nodemobile框架与nodejs、SDK和mapbox供应地图的功能相关,一些负责认证和客户反馈

相反,与视频播放相关的帧不会占用太多内存:

然后进入最大的ualappcore框架

经过层层勘探,小哥终于在这里锁定了最大的ualappcore。

根据他的工作经验,77MB仍然有点不正常。他计划使用nm命令深入查看框架的符号文件(nm用于显示二进制对象文件的符号表,格式如下)。

他很快就想起,斯威夫特的符号需要被剥离(剥离,IOS框架中的一个术语),而Objective-C则没有。

看看斯威夫特的,结果是:

未去除任何swiftframe符号。

这些都是无用且浪费内存的:

那就容易了。编写bash脚本并运行框架。好啊:

最后,您可以看到原来的框架已经从350MB减少到163m!

小哥说,这顿饭用了不到5分钟。出乎意料的是,要减少的空间太多,节省了187mb。

当前的安装包不到原始安装包的60%。

他猜测仍有空间削减安装包,但他对结果感到满意。

你被抛弃了吗?

“开发者不在乎”

在小哥发布这个博客后,一些网民评论说,许多安装包实际上可以减少15%到30%甚至更高的空间,比如Gmail和outlook。

然而,似乎很多开发者并不十分关心这个问题。他们只想快速更新应用程序:

无论用户是否节省了数亿流量,赚钱也是一样的。为什么这么麻烦?

一位嵌入式工程师说:当我向同事们提到我们应该注意这种优化时,他们总是茫然地看着我。

一些网民认为,除非应用商店开始处理这个问题,否则开发者不会做出改变。就说手机制造商很高兴看到这一幕。如果内存不足,你可以去他们那里买一部新手机。

他还发现Googleplaystore似乎没有显示应用程序的大小。

一些银行应用程序对这个问题特别认真,因为它们知道你不会轻易更换银行。

你怎么看?

© 本文系原创,著作权归:芦虎导航官网。如需转载,请署名并注明出处:https://www.luhu.co/article/000000000015692.shtml