作者 | 核子可乐、Tina
最近,有人在 Hacker News 指出 iOS 版 LinkedIn 应用体积接近 500 MB 大小,十分臃肿,而且其中 300 MB 是链接的框架和插件。
这一消息引发了众多网友的讨论,很大一部分是对 LinkedIn 批评:
“大胆猜测一下,LinkedIn 最具价值的用户,也就是那些拥有抢手技能的人,应该都用着高性能设备。因此,他们对于应用体积大小的问题,应该不会太在意。”
“他们无法进行‘臃肿应用’和‘优质应用’的安装数据对比测试,也无法得知人们不安装某个应用的原因。也正因为如此,我一直尽可能少地安装应用程序。一些应用程序就是些臃肿的垃圾。这种负面影响还会累积。即使以后 LinkedIn 花时间来改进他们的应用程序,也无法摆脱声誉受损带来的负面影响,我仍然不会考虑安装它。”
“对应用体积大小,大厂们常常不在意。因为那些因体积和 / 或性能问题而避开他们应用的用户,并不是那些拥有丰厚钱包 (或拥有宝贵数据) 的目标用户。”
“对于 LinkedIn 应用开发者来说,他们没有动力去创造一个优秀的应用。他们的工作内容主要是让他们的产品经理感到满意。LinkedIn 应用可能涉及数百甚至上千名开发人员,他们往往承受着巨大的‘尽快发布’的压力。其中一些人会认为一些奇怪的做法是理所当然的,例如静态链接到资源库——这可能是因为缺乏意识或能力不足,也可能是为了应付绩效考核。”
…
那么为什么 LinkedIn 应用有快 500 MB?先来看最新版 LinkedIn 的顶层视图:
其中 300 MB 是动态链接的框架和插件……确实相当“肥硕”。事实上,当前光 Dylibs 和插件的尺寸就已经超过了 2022 年 11 月版的完整应用体量。
其中插件和框架似乎是最臃肿的部分。下图所示,为 LinkedIn 插件 + 动态链接的 Voyagerlibs.framework。
大家注意到哪里不对劲了吗?
首先,这两款插件加上 VoyagerLibs 都附带有 ArtDecolconsResources.bundle(约为 8 MB),而这个捆绑包本身就存在于 Voyager Framework 当中,因此本该跟各插件共享……但 LinkedIn 仍然保留了下来。
再查看 TodayExtension、NotificationExtension 和 VoyagerLibs,就会发现其中包含大量重复的类名(如截屏部分所示)。
虽然我们并不确定它们跟公共 build 分析部分是否重复,但这些扩展似乎同样属于 VoyagerLibs 库的子集。
其他值得注意的还有:2023 年 3 月,TodayExtension 还不到 400 KB,到现在已经有约 60 MB……
考虑到 Today Extensions 已经被弃用,我们可以合理怀疑新增的部分到底有没有意义。
LinkedIn 很可能是在插件中对依赖项采用了静态链接方式,而非调用 VoyagerLibs 中的资源。
如果确实如此,那么插件(总共 109 MB)中肯定存在大量非必要内容。
此外,我们还发现了约 75 MB 的 insights。
关于我们对最新版本 LinkedIn 的完整分析,这里是详情:
有意思的是前两天我们刚发过一篇关于如何避免插件臃肿的博文:《将 iOS 应用体积缩小一半的秘籍:妥善运用动态框架》
原文链接: