設置
  • 日夜間
    隨系統(tǒng)
    淺色
    深色
  • 主題色

僅用 5 分鐘,程序員把一個超 400MB 的蘋果 iOS 應用安裝包削掉了 187MB

量子位 2022/2/26 12:23:52 責編:長河

前些日子,一個手機 QQ 安裝包就要快 900MB 的事兒在網(wǎng)上吵得沸沸揚揚。

最新安裝包又大了,已經(jīng) 924MB

△ 最新安裝包又大了,已經(jīng) 924MB

雖然最后大家發(fā)現(xiàn)它主要為了視頻通話特效多了一個虛幻引擎,但網(wǎng)友還是感嘆:

現(xiàn)在的 App 真的是越來越大了。

而就在最近,國外一位程序員也遇到了同樣的困惑。他乘的一班飛機由于沒有機上小電視,只能下載一個叫做“美聯(lián)航”的 App 來看視頻打發(fā)時間。

小哥一邊感嘆現(xiàn)在航空公司越來越雞賊:把成本都加到顧客頭上,一邊打開了應用商店,結果就很詫異:不就用來看個電影啥的嗎,一個 Netflix 都只有 101.5MB,這 App 怎么是它的四倍?

美聯(lián)航 App

作為一名 iOS / Android 開發(fā)工程師,小哥決定不“坐以待斃”,看看它是否真的需要這么大的空間。

原來可以省掉 187MB

說干就干,還在飛機上的小哥立刻用 ipatool 下載了這個 App 的二進制文件。

ipatool 是 GitHub 上標星 1.4k 的開源項目,是一個命令行工具,可以從 iOS 應用商店搜索和下載應用程序的 ipa 文件包,用這個包可以進行開發(fā)內(nèi)容的一些檢查等功能。

ipatool

下好以后需要把 ipa 擴展名改為 zip,解壓之后可以看到下面這樣的目錄:

應用目錄

可以發(fā)現(xiàn) Frameworks 就占了 414.8MB,小哥解釋:應用程序的主要內(nèi)存來源就是 Frameworks,現(xiàn)在的最佳實踐都是把代碼 push 到這里面,還是挺正常的。

接下來進入該目錄:

進入該目錄

以 UAL 開頭的框架是核心架構、NodeMobile 框架跟 NodeJS 功能有關、LocusLabsSDK 和 Mapbox 是供應地圖的,還有一些是負責身份驗證、客戶反饋的……

而視頻播放相關的框架相反其實占內(nèi)存并不多:

視頻播放相關的框架相反其實占內(nèi)存并不多

接著進入占空間最大的 UALAppCore.framework。

經(jīng)過層層探索,小哥終于在這里鎖定了最大占存的 UALAppCore。

最大占存的 UALAppCore

按照他的工作經(jīng)驗,77MB 這個數(shù)字還是有點反常的,他打算用 nm 命令深入看看這個框架的符號表(symbol)文件(nm 用于顯示二進制目標文件的符號表,格式如下)。

用 nm 命令查看框架符號表(symbol)文件

很快他就想起來,Swift 的符號需要剝離(strip,iOS 框架中的術語),Objective-C 則不需要。那就查 Swift 的,結果還真就發(fā)現(xiàn):沒有一個 Swift 框架的符號被剝離過。而這些都沒有用,白白耗內(nèi)存:

沒有一個 Swift 框架的符號被剝離過

那接下來就簡單了,寫一個 bash 腳本運行一下該框架就可以 OK:

通過 bash 腳本運行一下該框架

最后,可以看到原始框架從 350MB 減到了 163M!

原始框架從 350MB 減到了 163M

小哥表示,這一頓操作只花了不到 5 分鐘,沒想到可削減空間這么大,整整省掉了 187MB。等于現(xiàn)在的安裝包只有原來的不到 60% 了。他猜測該安裝包仍有削減空間,不過這個結果他已經(jīng)很滿意了。你,學廢了嗎?

“開發(fā)商才不關心呢”

就在小哥發(fā)出這個博客之后,有網(wǎng)友評論道,還有很多安裝包其實都可以再縮減 15% 到 30% 甚至更高的空間,就比如 Gmail、Outlook 這些很常見的應用。

但似乎現(xiàn)在很多開發(fā)商不是很關心這個問題,他們只想趕緊不停更新應用:給不給用戶省掉這幾百 M 的流量都一樣賺錢,為啥還要費功夫呢?

網(wǎng)友評論

有一位嵌入式工程師就表示:當我跟同事提起要注意這方面的優(yōu)化時,他們總是給我一個茫然的眼神。

有網(wǎng)友認為:除非各應用商店開始管這事兒,開發(fā)商是不會做出改變的。就單說手機廠商就很樂意看到這一場面,內(nèi)存不夠就可以去他們那買新手機了。

網(wǎng)友評論

他還發(fā)現(xiàn)谷歌 Play Store 好像就不顯示應用程序大小。而一些銀行 App 在這個問題上尤其嚴重,因為他們知道你不會輕易換銀行。你怎么看?

原博鏈接:

https://telkins.dev/posts/how-i-shaved-187mb-off-uniteds-airlines-439mb-ios-app/

評論來自:

https://news.ycombinator.com/item?id=30442529&p=2

廣告聲明:文內(nèi)含有的對外跳轉鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時間,結果僅供參考,IT之家所有文章均包含本聲明。

相關文章

關鍵詞:蘋果,iOS

軟媒旗下網(wǎng)站: IT之家 最會買 - 返利返現(xiàn)優(yōu)惠券 iPhone之家 Win7之家 Win10之家 Win11之家

軟媒旗下軟件: 軟媒手機APP應用 魔方 最會買 要知