作者 | 核子可樂、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 的完整分析,這裡是詳情:
LinkedIn v2024.0321.2152 Analysis | Emerge Tools
有意思的是前兩天我們剛發過一篇關于如何避免插件臃腫的博文:《将 iOS 應用體積縮小一半的秘籍:妥善運用動态架構》
原文連結:LinkedIn 應用體積臃腫達 500 MB,網友怒噴:大廠開發者都沒有動力創造優秀應用?!_工程化_核子可樂_InfoQ精選文章