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