Emerge 是一個監測和減少應用程序大小的平臺,可以持續監測并分析應用程序二進制大小,幫助開發者編寫更小、更好的代碼。近日 Emerge 發布了一份報告,顯示最新版本的 Xcode 存在會無意中增加應用程序體積的問題。
Xcode 14 于今年 9 月份正式發布,新版本添加了對 Swift 5.7 的支持,并針對 macOS Ventura、iOS/iPadOS 16 等最新系統添加了 SDK,除此之外,新版本 Xcode 的速度更快、體積縮小了 30%、增加的并行性使得構建項目的速度提高了 25%,以及長時間運行測試的速度提高了 30%。
但在 Xcode 14 發布后不久,Emerge 發現一些 iOS 應用程序的體積則是出現了明顯增加,其中從 9 月中旬到 10 月初之間,觀測到:
耐克 iOS 應用程序的安裝大小一開始僅為 182.2MB,之后變成了 322.1MB,空間占用增加了 76%
American Airlines(美國航空)從 182.2MB 增加到 389.1MB,增加了 113%
Chime 從 162.8MB 增加到 212.8MB,增加了 31%
在上述這些例子中,應用空間占用突然增大都是由于這些應用程序首次使用了 Xcode 14 構建,而歸根結底,導致這個問題發生的原因就是 Xcode 14 默認禁用了 Bitcode。
Xcode 14 更新文檔中寫道:
Xcode 不再默認構建 Bitcode,在未來的 Xcode 版本中,使用 Bitcode 構建的功能將被移除。含有 Bitcode 的 IPA 將在提交給 App Store 之前被剝離 Bitcode。
什么是 Bitcode
Bitcode 是打包應用程序的一種方式,它可以在開發者把應用提交到 App Store 后,將部分構建過程留給蘋果公司完成,蘋果所做的事情之一是剝離二進制符號。
什么是二進制符號剝離
二進制符號剝離(Binary symbol stripping)是指從二進制文件中刪除某些類型的元數據,這些元數據對于在生產中運行應用程序是非必要的。這些元數據在生產前可能是有幫助的,但之后只會讓用戶的手機變得更加臃腫。
簡單的解釋是,Bitcode 通過剝離二進制符號優化了生產構建。如果不打開 Bitcode,開發者就需要修改 Xcode 的構建設置,從而以其他方式剝離二進制符號。
也就是說,當開發者更新至 Xcode 14 之后,任何依賴 Bitcode 的應用程序都不再會從其生產的應用程序中剝離二進制符號了,這意味著一個應用程序可以在不增加任何功能的情況下出現體積大幅增加的情況。
Emerge 深度分析了耐克的 iOS 端應用程序,在 22.35.0 版本中,框架在 191.7MB 的安裝大小中占了 163.7MB。而到了 22.36.1 版本,框架在 322.1MB 的總容量中激增到 293.8MB。注意在每個框架中發現的深藍色的 "String Table" 的增加。
通過比較這兩個版本,可以發現幾乎所增加的 130MB 的體積都來自于 DYLD.String Tables。這些字符串表本身是非必要的元數據,而它們現在已經進入了生產構建中。
兩個版本應用程序的二進制符號也從 213.9KB (占應用程序總大小的 0.11%)增長到了 127.5 MB(占應用程序總大小的 40%)。也就是說耐克 iOS 應用程序在沒有任何重大功能變化的同時,增加了 130MB。(上圖:Xcode 14 之前的二進制符號大小;下圖:Xcode 14 之后中的二進制符號大小)
除了上述提到的這些應用,此次體積大幅增加的還包括了 Chrome、Amazon、Twitter、Twitch、ESPN 等常用的軟件。
應用程序的大小是影響你的應用程序的安裝和卸載指標的最大因素之一,過于臃腫會降低應用安裝率和提升卸載率,尤其是對于手機空間比較有限的用戶來說更加如此,最終會導致用戶數量下滑,反過來也影響應用活躍度,甚至是收入。對開發者來說,定期監測并了解如何減少應用程序的下載和安裝大小是一項重要的任務。
審核編輯 :李倩
-
二進制
+關注
關注
2文章
795瀏覽量
41686 -
應用程序
+關注
關注
37文章
3283瀏覽量
57749
原文標題:Xcode棄用Bitcode,導致應用體積大幅增加
文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論